Блог пользователя mesanu

Автор mesanu, история, 22 месяца назад, По-английски

Hello Codeforces!

flamestorm, SlavicG, MikeMirzayanov and I want to invite you to Codeforces Round 849 (Div. 4).

It starts on Feb/03/2023 17:35 (Moscow time).

The format of the event will be identical to Div. 3 rounds:

  • 5-8 tasks;
  • ICPC rules with a penalty of 10 minutes for an incorrect submission;
  • 12-hour phase of open hacks after the end of the round (hacks do not give additional points)
  • after the end of the open hacking phase, all solutions will be tested on the updated set of tests, and the ratings recalculated
  • by default, only "trusted" participants are shown in the results table (but the rating will be recalculated for all with initial ratings less than 1400 or you are an unrated participant/newcomer).

We urge participants whose rating is 1400+ not to register new accounts for the purpose of narcissism but to take part unofficially. Please do not spoil the contest for the official participants.

Only trusted participants of the fourth division will be included in the official standings table. This is a forced measure for combating unsporting behaviour. To qualify as a trusted participant of the fourth division, you must:

  • take part in at least five rated rounds (and solve at least one problem in each of them),
  • do not have a point of 1400 or higher in the rating.

Regardless of whether you are a trusted participant of the fourth division or not, if your rating is less than 1400 (or you are a newcomer/unrated), then the round will be rated for you.

Many thanks to the testers: _Vanilla_, badlad, Gheal, Phantom_Performer, Beacon, Nihad_Nabelsi, prvocislo, keta_tsimakuridze, Bakry, RedstoneGamer22, tibinyte, KrowSavcik, haochenkang, myvaluska, sandry24, BucketPotato, Vladosiya, pashka.

We suggest reading all of the problems and hope you will find them interesting!

Good Luck!

UPD: Editorial is posted.

  • Проголосовать: нравится
  • +261
  • Проголосовать: не нравится

»
22 месяца назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

Hell yeah!!

»
22 месяца назад, # |
  Проголосовать: нравится +34 Проголосовать: не нравится

Eat an ice cream for positive delta :D

  • »
    »
    22 месяца назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится

    Done Sir.

  • »
    »
    22 месяца назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится

    i did it and finally get a positive delta lol

  • »
    »
    22 месяца назад, # ^ |
      Проголосовать: нравится +5 Проголосовать: не нравится

    Ate this too much!!, Hope to reach specialist in this round.. After performing like specialist in some rounds, there comes one round such that sometimes I am not able to perform as expected. It's all about consistency.. Will try my best in tomorrow's div 4 round. Wish me luck :)

»
22 месяца назад, # |
  Проголосовать: нравится +19 Проголосовать: не нравится

As a tester, I suggest you participate!

»
22 месяца назад, # |
  Проголосовать: нравится +28 Проголосовать: не нравится

As a tester, I enjoyed this round and I recommend everyone to participate!

»
22 месяца назад, # |
  Проголосовать: нравится +27 Проголосовать: не нравится

As a newbie tester I recommend fellow newbies to participate :)

»
22 месяца назад, # |
  Проголосовать: нравится -11 Проголосовать: не нравится

I want this round to be unrated!!!

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

first unrated

»
22 месяца назад, # |
  Проголосовать: нравится +36 Проголосовать: не нравится

As a tester, this is the best div4 I've tested so far.

»
22 месяца назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

[ Deleted ]

»
22 месяца назад, # |
  Проголосовать: нравится +28 Проголосовать: не нравится

As a tester, I enjoyed this round so much I forgot I was testing

»
22 месяца назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Another round for fast code writing.

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

First, please update the rating of the two past tests!

»
22 месяца назад, # |
  Проголосовать: нравится +2 Проголосовать: не нравится

Eagerly waited for unrated contest.

»
22 месяца назад, # |
  Проголосовать: нравится +45 Проголосовать: не нравится

As a tester, i loved this contest too much but not more than

Pringles

.

»
22 месяца назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится

I am very excited for this contest, may be it will be a good contest for all the newbies like me, to become pupil or specialist

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Finally my time to shine.

I let my rating sink to be rated for div4. Lets go!!

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Hope in this contest my rating will increase...who else is thinking.... Thanks Codeforces and mesanu,flamestorm,MikeMirzayanov for this contest...:)

»
22 месяца назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Will I be rated for this contest?

  • »
    »
    22 месяца назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    yes it will be rated for you. however, you will not be included in official standings because you have participated in < 5 rated rounds. this round is rated for all people with rating < 1400

  • »
    »
    22 месяца назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Yes

»
22 месяца назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

At the end of the contest , some people will be happy and some will be sad, Be of the first kind

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Can you please change the staring time of the contest? It starts after the Izho and info(1)cup contest. It would be great if you changed the time a bit later or to another day.

»
22 месяца назад, # |
Rev. 2   Проголосовать: нравится -19 Проголосовать: не нравится

.

»
22 месяца назад, # |
  Проголосовать: нравится +4 Проголосовать: не нравится

![ ](cf-meme)

»
22 месяца назад, # |
  Проголосовать: нравится +18 Проголосовать: не нравится
»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Let's Goo

»
22 месяца назад, # |
  Проголосовать: нравится +7 Проголосовать: не нравится

omg mesanu and flamestorm setters

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Good weekend, good div.4!!!

»
22 месяца назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

It's been six days since typeDB round has finished still no problem rating update and no user rating update. Something weird there's been about the codeforces recently.

»
22 месяца назад, # |
Rev. 2   Проголосовать: нравится +2 Проголосовать: не нравится

deleted

»
22 месяца назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

Good Luck contest For Every One

This contest must be successful for EveryBody

»
22 месяца назад, # |
  Проголосовать: нравится +4 Проголосовать: не нравится

OMG SlavicG Round!

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Finally, my first div-4 contest after becoming specialist

»
22 месяца назад, # |
  Проголосовать: нравится +2 Проголосовать: не нравится

Will I be rated in this round cause the rating of last div2 round hasn't been updated yet and I am still a pupil,but if last round's rating update I will become specialist.

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

ratings roll back again of Last Div 3

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

I'm wondering how the rating will change for those who turned to be a specialist in the last div2 round, if it is rated.

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Does the Penalty start from the begin of the contest or my first visit to contest/codeforces?? like if the contest start on 2:00 and I enterd the contest 2:30 and solved a problem at 2:35. Then the Penalty equal 35 or 5?

»
22 месяца назад, # |
Rev. 3   Проголосовать: нравится +8 Проголосовать: не нравится

congratulation SlavicG for becoming CM from expert

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Woooahahshasfhazfz

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Can't wait to see hmzqaq's performance in this round. (He's duck_pear)

»
22 месяца назад, # |
Rev. 2   Проголосовать: нравится -25 Проголосовать: не нравится

..

»
22 месяца назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

Stringforces!

»
22 месяца назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится

Good Div4 round, like always!

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

G2 is quite hard for div4..?

»
22 месяца назад, # |
  Проголосовать: нравится +31 Проголосовать: не нравится

Who's the cool Pikachu in problem B?

»
22 месяца назад, # |
  Проголосовать: нравится +4 Проголосовать: не нравится

Nice problem set, solved all😊

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

how to solve F?? by not getting tle

  • »
    »
    22 месяца назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Seems like lazy propogation on segment tree. Calculating the value is O(1) as sum of digits would convert to a single digit in 2-3 operations.

    • »
      »
      »
      22 месяца назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      You have to realize that for any a[i] you really only do the operation a couple times, and then it becomes a 1 digit number, which won't change. So just keep track of the indexes that are 1 digit numbers and don't bother visiting those.

    • »
      »
      »
      22 месяца назад, # ^ |
      Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

      There's no need for lazy propagation. Range updates and single queries can be done with a normal segtree storing differences of consecutive elements. 19192561

  • »
    »
    22 месяца назад, # ^ |
      Проголосовать: нравится +6 Проголосовать: не нравится

    You can either solve it using Fenwick tree like I did, or there's an alternative approach as well which doesn't use trees at all.

    The sum of digits operation will only be applied at most 3 times on $$$a[i]$$$. So, make an 3 arrays, the $$$1st$$$ one will be storing the numbers obtained by using the sum operation on all $$$a[i]$$$ once, the $$$2nd$$$ one is when the sum operation is used twice, and similarly for $$$3rd$$$.

    Now, all you need to do is to check for all $$$i$$$ in $$$[l,r]$$$ how many times it occurs.

    • »
      »
      »
      22 месяца назад, # ^ |
        Проголосовать: нравится +3 Проголосовать: не нравится

      hmmmmmmmmmm,nice approach

    • »
      »
      »
      22 месяца назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Then it becomes a scanline problem? Or maybe coordinates compression with pref-sum? Or there are easier solutions?

    • »
      »
      »
      22 месяца назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Why 3 times?

      After 2 operations only a number becomes single digit number right?

      • »
        »
        »
        »
        22 месяца назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Take $$$999,999,988$$$ it will become $$$1$$$ digit number after $$$3$$$ operations

  • »
    »
    22 месяца назад, # ^ |
    Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

    I solved it with dsu

    I observed that a number will not be updated many times so that I let a number to be updated no more than ten times.

    When the number of updates for a particular index reached >10 I will make the parent[i]= findparents(i+1)

    Using the above approach whenever an index would be encountered for greater 10 times it will be skipped to the next index and then with the help of dsu I will reach the required index

    My submission — https://codeforces.me/contest/1791/submission/191990981

    time complexity will O(n*10+q)

    • »
      »
      »
      22 месяца назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Idk how u guys think of this solution during contest,but hats off to u guys..... I will upslove it tomorrow. Ok bye, Netflix............

    • »
      »
      »
      22 месяца назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      I used DSU as well but solved it slightly differently. If any number is < 10 it will never need an update again and we can add it to the same set as the element at i-1.

      • »
        »
        »
        »
        22 месяца назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        No

        I mean the number of operations applied on a number cannot be greater than 3 (which I randomly took 10)

»
22 месяца назад, # |
  Проголосовать: нравится +12 Проголосовать: не нравится

Awesome contest.

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Solved E and G1 in last 19 minutes of the contest!

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Good problems this time, I had fun with F, first time using Fenwick tree by myself.

»
22 месяца назад, # |
Rev. 3   Проголосовать: нравится +3 Проголосовать: не нравится

❤️ First time I solved A,B,C,D ✅ (in 32 min)

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Can someone explain how the 9th testcase is possible in problem G2, or just how to do the problem in general

»
22 месяца назад, # |
  Проголосовать: нравится +9 Проголосовать: не нравится

Screencast with solutions for all problems in case someone is interested.

»
22 месяца назад, # |
Rev. 7   Проголосовать: нравится +5 Проголосовать: не нравится

A & B: implementaion.

C: 2 pointers.

D: Count the occurence of each different chars for every prefixes and suffixes. The answer is max(count(prefix(i))+count(suffix(i+1))).

E: Dynamic programming. Let dp[i][flag]=the maximum value we can get from first i elements, where flag is true if we've fliped the sign of a[i-1],a[i]. Similar with 1787C - Remove the Bracket.

F: A number can be updated of most 3 times (then it will have only 1 digit, which means, it will not be changed anymore) so we don't need to update a same element for more than 3 times. We can use segment tree to store the number of updates (although there can be simpler solutions, it's easier for me to copy a prepared segtree template).

  • For all 1<=a<=10^9, the maximum digit sum of it is 81 (when a=999,999,999), and for 0<=a<=81, the maximum digit sum is 16 (when a=79), and for 0<=a<=16, the maximum digit sum is 9 (when a=9).

G1: The cost of each portal is a[i]+i, sort them and we can get the answer.

G2: The cost of each portal is a[i]+min(i,n+1-i), but we need to add an extra cost if all the portals we've used are on the "right part" of the number line (which means they are closer to n+1 than 0). Therefore, we need to consider for 2 situations: First, consider we use at least one "left portal". We can use the left portal with minimum cost and sort the remain portals. Second, consider we only use "right portals". We also solve this situation by sorting, but we need to add min(2*i-n-1) to our total cost. First we use portals by the order of their cost, and when we can't use the next portal, we check all remained portals and try to use them.

By the way: MikeMirzayanov look at this please!

  • »
    »
    22 месяца назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    E was one liner after some simple observation.

  • »
    »
    22 месяца назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    Elegant solution for problem E:
    - If number of negative numbers is even then maximum possible sum will be sum of absolute value of all array elements. - If number of negative numbers is odd then maximum possible sum will be sum of absolute value of all array elements except absolute minimum one minus absolute minium one.

»
22 месяца назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

can someone hack on problem F submission? I think it should TLE.

  • »
    »
    22 месяца назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Done

    • »
      »
      »
      22 месяца назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Is mine hackable for F? submission

      • »
        »
        »
        »
        22 месяца назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        I think no if your segtree is ok

        • »
          »
          »
          »
          »
          22 месяца назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          Solved F without segtree, is my submission hackable :) ?

          • »
            »
            »
            »
            »
            »
            22 месяца назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится

            Done

            • »
              »
              »
              »
              »
              »
              »
              22 месяца назад, # ^ |
                Проголосовать: нравится 0 Проголосовать: не нравится

              That means it must be solved with segtree? there is no other way?

              • »
                »
                »
                »
                »
                »
                »
                »
                22 месяца назад, # ^ |
                  Проголосовать: нравится +1 Проголосовать: не нравится

                You can solve it without segtree. You can see solution in editorial or you can see tops' solutions. For example Jiangly solved it with DSU

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  22 месяца назад, # ^ |
                    Проголосовать: нравится 0 Проголосовать: не нравится

                  can you tell what is going wrong in my code in the same problem.(I am failing test case 3rd i have used fenwick tree tough).

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  22 месяца назад, # ^ |
                  Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

                  UB if mp[v[idx - 1]].size() is zero and operations is positive:

                  else if (operations > (int)mp[v[idx - 1]].size()) { 
                      cout << mp[v[idx - 1]][mp[v[idx - 1]].size() - 1] << endl;
                  
                  
                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  22 месяца назад, # ^ |
                    Проголосовать: нравится 0 Проголосовать: не нравится

                  I updated but still it is giving me same error.

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  22 месяца назад, # ^ |
                    Проголосовать: нравится 0 Проголосовать: не нравится

                  v[idx - 1]

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  22 месяца назад, # ^ |
                    Проголосовать: нравится 0 Проголосовать: не нравится

                  still failed.

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  22 месяца назад, # ^ |
                  Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
                  1
                  6 12
                  999999997 999999997 999999997 999999997 999999997 999999997
                  1 1 1
                  2 1
                  1 1 1
                  2 1
                  1 1 1
                  2 1
                  1 1 1
                  2 1
                  1 1 1
                  2 1
                  1 1 1
                  2 1
                  
                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  22 месяца назад, # ^ |
                    Проголосовать: нравится 0 Проголосовать: не нравится

                  can I ask one question How are you so fast at debugging?(I also wanan be that fast that will help me a lot).

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  22 месяца назад, # ^ |
                    Проголосовать: нравится 0 Проголосовать: не нравится

                  No, I'm toooooooo slow. I should notice this bug after second-third code reread, but I was reading it during 11 minutes...
                  Now I was just reading your code and comparing it with some others: your BIT seams OK, then bug must be in other parts of code
                  I've checked update: OK
                  I've checked query: found UB
                  What's left? Only filling of mp, you just fill without check that this element is already in map
                  Just small advice: use local variables like:

                  this
»
22 месяца назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

Fun problemset. Managed to solve everything in 1:08, which I am quite proud of. E was very elegant, F and G2 were also nice.

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

i was expecting atleast one graph question xD

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Great contest. Thanks guys :-)

»
22 месяца назад, # |
Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

Very cool that F can be solved with set and DSU. I got stuck on BIT implementation because I don't have a template for it and have only solved a few CSES problems using it. Forgot about the limitation of 3 change operations. Thought G2 would be DP, but the binary search solution is quite elegant. 10/10 problemset overall.

»
22 месяца назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

My live screencast with explanations for all problems. I have tried to re-explain last problem in the end after I solved it. The problems were very interesting. I felt the last problem was a bit on the harder side for a Div 4 round.

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

What's wrong with this solution of E 192043725? Thanks.

  • »
    »
    22 месяца назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    The return value of your sol functuon is int instead of long long.

  • »
    »
    22 месяца назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    Sir it was int overflow

    Spoiler
»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

F was straight-forward lazy propgation question once you figured out it will take atmost 3 operations. I just copy pasted some template.

  • »
    »
    22 месяца назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    I could not find the template for range update and point query. I could only manage to find for point update and range query smh.

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

can anyone hack my G2?I feel it not correct,even i pass the pretest https://codeforces.me/contest/1791/submission/192031288

»
22 месяца назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

What is wrong with my solution for F? https://codeforces.me/contest/1791/submission/192046957

  • »
    »
    22 месяца назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    You are only calculating up to two operations for every number, while there are numbers like $$$999\ 999\ 988$$$ which become 1-digit numbers only on the third operation.

»
22 месяца назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Can anyone tell me why my dsu based code is giving runtime error ! It's well under the time complexity and limit. https://codeforces.me/contest/1791/submission/191951510

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

What's Segment tree doing in a div 4 round ?

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Is there any penalty for unsuccessful hacking attempt/reward for Successful hacking attempt?

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Very nice problems. Thanks for the contest. I managed to solve A,B,C,D,E,G1 within 50 minutes but could have had F as well if I knew segment tree.

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Why G2 got a lot of hacks in first hour?

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

I can't understand how it works in Problem E. After all, we need to take exactly the neighboring elements and change the signs in them. If there are 7 numbers, for example -1 -2 -3 4 -1 -2 -3 the sum of 16 is not possible.

  • »
    »
    22 месяца назад, # ^ |
    Rev. 6   Проголосовать: нравится 0 Проголосовать: не нравится
    • First, take -3 and -1 as a boundary, then the array will become -1 -2 3 4 1 -2 -3
    • Next, take -2 and -2 as a boundary, then the array will become -1 2 3 4 1 2 -3
    • Last, take -1 and -3 as a boundary, then the array will become 1 2 3 4 1 2 3

    You can make all the element in $$$[l,r]$$$ positive if $$$a_l<0$$$ and $$$a_r<0$$$ and $$$a_{l+1} \cdots a_{r-1}$$$ are positive, so it is not correct to take neighboring elements.

    • »
      »
      »
      22 месяца назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Select 2 neighboring elements and change their signs. That's what the condition says. I don't understand it.

      • »
        »
        »
        »
        22 месяца назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Think it this way: '-' sign can just travel anywhere along array, bcoz if we do operation on 1 positive and 1 negative number signs of them will interchange, in this way we can make '-' sign travel along array.

»
22 месяца назад, # |
Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

Why my solution for problem D is wrong 191979249? and that is the code:(for single test case):

UPD: I solve it using this method and it is accepted

int n;
    set<int>h1; set<int>h2;
    cin >> n;
    char c[n]; int ar[n];
    for(int i=0; i<n; i++){
        cin >> c[i];
        h1.insert(c[i]);
        ar[i]=h1.size();
    }
    for(int i=n-1; i>0; --i){
        h2.insert(c[i]);
        ar[i-1]+=h2.size();
    }
    sort(ar,ar+n);
    cout << ar[n-1];
»
22 месяца назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

deleted

  • »
    »
    22 месяца назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    You can check my answer

        int n;
        set<int>h1; set<int>h2;
        cin >> n;
        char c[n]; int ar[n];
        for(int i=0; i<n; i++){
            cin >> c[i];
            h1.insert(c[i]);
            ar[i]=h1.size();
        }
        for(int i=n-1; i>0; --i){
            h2.insert(c[i]);
            ar[i-1]+=h2.size();
        }
        sort(ar,ar+n);
        cout << ar[n-1];
    
»
22 месяца назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

Well, it was surprising to me to know how the code for G2 went TLE during the comp (Though I know it was tightly bounded, it passed the given TCs after the comp, THE SAME CODE)...

Can somebody hack it or let me know if it is still tightly bound on those TL?

Here's the code — #192051148 Python o_O

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Can someone explain F?

  • »
    »
    22 месяца назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    I'll assume you read the editorial for F but could not understand that solution, so I'll go ahead and try to explain another approach.

    For each position i, we need to know how many times that position was modified by the operation. For queries of type 1, we get an interval [l, r] and we need to apply the operation on every position i from l to r. But how do we do that?

    We could have an array initially filled with zeros to maintain a counter of how many operations were done for each position. Say, for n=5, this array would start as [0, 0, 0, 0, 0], and if we got a query of type 1 in the interval [3, 5], our array would update to [0, 0, 1, 1, 1], as we did one operation on positions 3, 4, and 5.

    Now, a simple way to maintain this operation counter array would be to iterate over each position from l to r, whenever we receive a query of type 1, and add 1 to each position. But straightforwardly doing that would TLE, as it would take O(n) (linear time) to process each query of type 1.

    But what if we could do this update operation on our array of counters in O(logn)? That is where the data structure BIT (Binary Indexed Tree, or Fenwick Tree) comes in handy. We can do range updates (say, add 1 to each position from l to r) in O(logn). If this is your first time hearing about this data structure, I suggest you read a bit more about it. It can be a bit daunting to understand at first, but the code is really easy.

    Well, now that we can process queries of type 1 in O(logn) time, now we're left with queries of type 2. To process those, we only need to read the value present in our array of counter, for the requested position. After reading this value, we can apply the operation in a straightforward manner, as it is really fast.

    Here is my submission to make more sense of what I tried to explain. Please let me know if you have any more questions and I'll try my best to answer them.

  • »
    »
    22 месяца назад, # ^ |
    Rev. 2   Проголосовать: нравится +8 Проголосовать: не нравится

    The naive approach would be to iterate from $$$l$$$ to $$$r$$$ and apply the changes as mentioned in the statement. However, the time complexity is $$$O(nq)$$$ for this approach which will TLE.

    Consider what happens when we apply the operation $$$a[i] := d(a[i])$$$ to an index $$$i$$$ (here $$$d(x)$$$ denotes the sum of digits of $$$x$$$). Clearly, $$$d(a[i])$$$ is $$$O(\log a[i])$$$, since there are $$$O(\log a[i])$$$ digits in $$$a[i]$$$, and each of them is upper bounded by $$$9$$$. So roughly the operation corresponds to doing $$$x \mapsto c \log x$$$.

    Intuitively, the idea is that this reduction is huge, and the number of times you will need to apply this operation till you get a single digit number is quite small. At least you can show that every time we apply this operation on a number having at least 2 digits, the number of digits never increases after applying this operation, and in fact it decreases by at least 1 after at most 2 operations. So you need at most $$$18$$$ operations (which is a very loose bound, and the editorial shows that you can replace it by $$$3$$$) under these constraints to get to a single digit number, which satisfies $$$x = d(x)$$$. So after a small number of operations on $$$a[i]$$$, you end up with a single digit number, after which applying the operation on it doesn't change the number.

    So let's do this mentally: maintain a (sorted) list of indices which have $$$a[i] > 9$$$. These are the indices on which doing the operation can potentially change the number. When you're applying the update on a range, you find the indices in this list that will need a change (the remaining ones are fine as they are). Let's not think about how we will find the indices at this point. For each index, we will process it at most $$$18$$$ times before it gets out of the list. So overall, the total number of indices considered is $$$18n$$$.

    Now using a std::set and lower_bound, you can find and update the (sorted) list in $$$O(\log n)$$$ time per operation.

  • »
    »
    22 месяца назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Approach
    Solution
»
22 месяца назад, # |
  Проголосовать: нравится +9 Проголосовать: не нравится

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

my first fst round... it teach me a lot.

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Отличный раунд получился! У меня новый рекорд! 5 задач за раунд решил!

»
22 месяца назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

Anyone tell me why this got hacked for G1? Submission https://codeforces.me/contest/1791/submission/191967985

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Did they change tests for C. I had done a typo in my code, a <= was == but it went through during the contest and it was accepted, it was accepted after the competition as well, but just today it turned into being not accepted. From a positive rating change to a negative rating change, nice.

»
22 месяца назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

I didn't get the rating. Does anyone get ? **** NOTE: This is my first contest

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

I like how G2 has like 58 tests but still wrong greedy solution gets AC

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

i have some issues with the problem F I used https://cp-algorithms.com/data_structures/fenwick.html#finding-sum-in-one-dimensional-array they skipped my submisions

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

what can i do i get skipped my problems

  • »
    »
    22 месяца назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Your code might have significantly matched with someone else's code then. You can check your talks or post about it on a specific blog about same.

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

My solution is skipped and i didn't Cheat we just at same university and think in same way

»
22 месяца назад, # |
Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

I recently got a message from Codeforces team that my solution 191923515 matches with 192031691. But I used the segment tree code template from 188598221 which was used long ago in some contest and I usually use the same template as this one. MikeMirzayanov please check it once, I haven't copied the code from some other user, I just used a previously used template of code which I usually use for implementation of segment tree. We all study at the same university so we use the same template of code we shared once. I hope the plagiarism is removed and my solution is judged.

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Произошло недопонимание. Я не копировал чужие коды. В самом деле, я просто отправил решение не с того аккаунта. Аккаунт Anuar-B-005-26 является моим запасным аккаунтом для других соревнований. Я случайно отправил своё решение с того аккаунта, позже я заметил, что пишу не на том аккаунте. Этому доказательство то, что у Anuar-B-005-26 посылка лишь на одну задачу — А. После этого, из нежелания писать код заново, я просто скопировал старый и отправил его.

По возможности, попрошу пересмотреть свое решение.

  • »
    »
    22 месяца назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Соглашение участие: не используете несколько аккаунтов, а в соревновании принимаете участие со своего личного и единственного аккаунта.

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Hopefully, this was my last rated Div. 4 round.

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Хороший раунд с интересными задачами

»
22 месяца назад, # |
Rev. 2   Проголосовать: нравится +3 Проголосовать: не нравится

I got a mail from the codeforces that my solution 191964891 for the problem 1791G1 significantly coincides with solutions heavierfire/191964891, abhinav.maurya202/191979043. It is a pure coincidence case and I have not copied it from anywhere. The variables used in the code are pretty common and there is a very high probability that it can be used by others. And also the logic for the problem was also very standard in my opinion.

So I request you to please have a look and consider my submissions for the contest.

flamestorm, SlavicG, MikeMirzayanov and mesanu

Thanks

»
22 месяца назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

Hello Codeforces and MikeMirzayanov

I recently received this message that my code (191979043) significantly coincides with solutions (191964891) of this another person code whom I don't know and have no single information about him,

Attention!

Your solution 191979043 for the problem 1791G1 significantly coincides with solutions heavierfire/191964891, abhinav.maurya202/191979043. Such a coincidence is a clear rules violation. Note that unintentional leakage is also a violation. For example, do not use ideone.com with the default settings (public access to your code). If you have conclusive evidence that a coincidence has occurred due to the use of a common source published before the competition, write a comment to post about the round with all the details. More information can be found at http://codeforces.me/blog/entry/8790. Such violation of the rules may be the reason for blocking your account or other penalties. In case of repeated violations, your account may be blocked.

I don't have no "conclusive" evidence. I didn't share my code with anyone, and I didn't even share my idea with anyone before contest finished. I use my local VS Code editor to write code, so my code is unlikely to leak.

This problem is simple, we just need to sort after adding the indices and anyone could have come up with this idea, and the solution is short. Also my way of writing code is also very simple. So coincidence can happened. So check this again please. And please give my rating back

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Добрый день!

Получил предупреждение за попытку 191986416. В попытке использован широко доступный код, который был размещен публично до соревнования — https://www.geeksforgeeks.org/lazy-propagation-in-segment-tree/

»
22 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

I don't know why the code of my F question (191945896) and (191987078) in this competition is so similar. I didn't have anyone around me at the game and none of my friends that I knew were playing. That account is not my account, both of these accounts are not rated, there is no interest relationship between me and that person, and I do not need to provide the code to that person in div4 competition