Vladosiya's blog

By Vladosiya, history, 23 months ago, translation, In English

Hello! Codeforces Round 946 (Div. 3) will start at May/20/2024 17:35 (Moscow time). You will be offered 6-8 problems with expected difficulties to compose an interesting competition for participants with ratings up to 1600. However, all of you who wish to take part and have a rating of 1600 or higher, can register for the round unofficially.

The round will be hosted by rules of educational rounds (extended ICPC). Thus, solutions will be judged on preliminary tests during the round, and after the round, it will be a 12-hour phase of open hacks.

You will be given 7 problems and 2 hours and 15 minutes to solve them.

Note that the penalty for the wrong submission in this round is 10 minutes.

Remember that only the trusted participants of the third division will be included in the official standings table. As it is written by link, this is a compulsory measure for combating unsporting behavior. To qualify as a trusted participant of the third 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 1900 or higher in the rating.

Regardless of whether you are a trusted participant of the third division or not, if your rating is less than 1600, then the round will be rated for you.

Round is based on UKIEPC 2024: Spring Practice. Please refrain from participating in this round if you are familiar with the tasks of this competition.

I would like to thank:

  1. Authors of the original competition: Aksenov239, MaxBuzz, RobinFromTheHood, darnley, izban, pkhaustov, lsantire, az453, fedor.tsarev, Shoaib Jameel.

  2. MikeMirzayanov for help with ideas and Polygon and Codeforces platforms.

  3. -is-this-fft-, peltorator, tute7627 for red testing.

  4. ibraevdmitriy, kaikey, gmusya, nika-skybytska, Giga_Cronos, diskoteka for yellow testing.

  5. TypeYippie, kzyKT, tepamid, ahshafi for purple testing.

  6. Abo_Samrah, Zandler, sam07a, YESMAKHAN, xygzy, Klaus26 for blue testing.

  7. Morvolzz, dasha..zhilina, sutekine, Muhsen, Gojova, Acanikolic73 for cyan testing.

  8. You for participation.

Good luck!

UPD: Editorial is out.

  • Vote: I like it
  • +194
  • Vote: I do not like it

| Write comment?
»
23 months ago, hide # |
 
Vote: I like it +43 Vote: I do not like it

well-balanced div3 round, GL for all participants 🏆

»
23 months ago, hide # |
 
Vote: I like it +13 Vote: I do not like it

I can barely contain my excitement! I hope this will be a good one! GLHF!

»
23 months ago, hide # |
 
Vote: I like it +36 Vote: I do not like it

As a tester, I hope you to enjoy the contest. Tasks are quite interesting and educational. Good luck!

  • »
    »
    23 months ago, hide # ^ |
     
    Vote: I like it 0 Vote: I do not like it

    Can I get the following test case:

    Test Case 2: wrong answer 1110th numbers differ — expected: '5', found: '4'.

    • »
      »
      »
      23 months ago, hide # ^ |
       
      Vote: I like it 0 Vote: I do not like it

      int t =0 ;

      void testcase (){

      if (++t==1110){
                  for (int  i = 0 ; i <n ; ++)
                            cout<<arr[i]<<'|';
                  cout<<"\n";
                  return  ; 
          }

      }

      • »
        »
        »
        »
        23 months ago, hide # ^ |
         
        Vote: I like it 0 Vote: I do not like it

        try to avoid seeing your wa this will affecr the ability of discovering wa

»
23 months ago, hide # |
 
Vote: I like it +20 Vote: I do not like it

Good round, come and participate.

»
23 months ago, hide # |
 
Vote: I like it +16 Vote: I do not like it

Another Vladosiya round!!!

»
23 months ago, hide # |
 
Vote: I like it +22 Vote: I do not like it

hoping to return back the blue handle

»
23 months ago, hide # |
 
Vote: I like it +15 Vote: I do not like it

As a participant I have to say im excited.

»
23 months ago, hide # |
 
Vote: I like it +21 Vote: I do not like it

wishing to get my Pupil back

»
23 months ago, hide # |
 
Vote: I like it +13 Vote: I do not like it

Well GLHF, let's gain some rating!

»
23 months ago, hide # |
 
Vote: I like it +20 Vote: I do not like it

as a tester , i hope you enjoy the round , a realy very good round <3

»
23 months ago, hide # |
 
Vote: I like it +34 Vote: I do not like it

As a tester, I encourage you to read all the problems.GL and Happy Coding.

»
23 months ago, hide # |
 
Vote: I like it +13 Vote: I do not like it

Hope i can solve till E this time

»
23 months ago, hide # |
 
Vote: I like it +17 Vote: I do not like it

Looking forward to an AK, and GLHF to all participants, rated or not!

»
23 months ago, hide # |
 
Vote: I like it +1 Vote: I do not like it

Hope to reach cyan this contest : >

»
23 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

Mewing cat ready for the contest

bye bye

»
23 months ago, hide # |
 
Vote: I like it +17 Vote: I do not like it

Beautiful Contest...

I Loved Solving the problems...

Especially the relation "Money Buys Less Happiness Now" with "Money Buys Happiness" won my heart :)

»
23 months ago, hide # |
 
Vote: I like it +16 Vote: I do not like it

Thanks for nice tasks.

Funny that I solved G by accident couple months ago.

»
23 months ago, hide # |
 
Vote: I like it +1 Vote: I do not like it

E was tough

  • »
    »
    23 months ago, hide # ^ |
     
    Vote: I like it 0 Vote: I do not like it

    Teach me your ways big bro you’re so strong

    • »
      »
      »
      23 months ago, hide # ^ |
      Rev. 6  
      Vote: I like it +11 Vote: I do not like it

      E had a nice dp thing. Take dp[i][x] to mean the minimum number of pounds you need in order to obtain at least x happiness at month i.

      The transitions are:

      for a certain happiness x, we know that dp[i][x] is at most equal to dp[i — 1][x] (that is, the answer for the previous month). dp[i][x] can also be dp[i — 1][x — h[i]] + c[i] if c[i] + dp[i — 1][x — h[i]] <= the amount of money we have garnered so far.

      dp[i — 1][x — h[i]] + c[i] represents the minimum cost to get at least x happiness assuming we buy happiness at month i. Of course, we can only afford this if it is less than our current amount.

      We don't want x — h[i] to go below zero. So dp[i][x] = min(dp[i — 1][max(0, x — h[i])] + c[i], dp[i — 1][x]).

      After this, in order to make the dp[i] represent the minimum number of pounds to get at least x happiness, we just let dp[i][a] = min(dp[i][a], dp[i][a + 1]) for a going from the sum of all happiness to 0. Aka just take suffix minimums.

      The base case happens at month zero (or at month 1 actually since you technically have no money at month 1). The minimum number of pounds we need in order to obtain 0 happiness at month 0 is 0. The minimum number of pounds we need to obtain x >= 1 happiness at month 0 is infinity.

      The answer will be the highest index in dp[m] who's value is not equal to infinity.

      There was a lot happening in this problem.

»
23 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

In problem C, I have wasted a lot of time in addition to 3 wrong answers because I thought that 1 <= ai <= 9

»
23 months ago, hide # |
Rev. 2  
Vote: I like it +2 Vote: I do not like it

fail to solve D

hardest Div3 I've ever taken

byebye cyan hello green

  • »
    »
    23 months ago, hide # ^ |
     
    Vote: I like it 0 Vote: I do not like it

    Me too. I failed on C but succeeded on D. Even D takes a lot of time. Why we should move both the rover and the helicopter? If we may only move one, it will be much easier.

»
23 months ago, hide # |
Rev. 2  
Vote: I like it 0 Vote: I do not like it

Div. 3 like Div. 2.5

  • »
    »
    23 months ago, hide # ^ |
     
    Vote: I like it 0 Vote: I do not like it

    more like Div3: Algorithms, Div 2+: Implementation. I spent over an hour trying to debug F.

    • »
      »
      »
      23 months ago, hide # ^ |
       
      Vote: I like it +3 Vote: I do not like it

      I agree first 4 were all implementation based.

    • »
      »
      »
      23 months ago, hide # ^ |
       
      Vote: I like it 0 Vote: I do not like it

      yeah same, i only realized after like 30 min that they for some reason swapped the x-axis and the y-axis. couldn't solve G (in contest) then :(

»
23 months ago, hide # |
Rev. 2  
Vote: I like it +21 Vote: I do not like it

Though, I was not able to solve it, E was amazing.
Though, I was able to solve it, C was disgusting.

»
23 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

humiliating

»
23 months ago, hide # |
 
Vote: I like it +3 Vote: I do not like it

The hardest div 3 I've ever seen.

»
23 months ago, hide # |
 
Vote: I like it +3 Vote: I do not like it

(corner_case)Forces

»
23 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

Can someone pls tell me how did you solve que C? I tried solving it using brute force and got TLE multiple times 261901233

  • »
    »
    23 months ago, hide # ^ |
     
    Vote: I like it 0 Vote: I do not like it

    Think of how find the number of beautiful pairs of triples that differ in the third element... then think of how to extend it

»
23 months ago, hide # |
 
Vote: I like it +4 Vote: I do not like it

good tasks

»
23 months ago, hide # |
 
Vote: I like it +36 Vote: I do not like it

In this round, there were three problems based on my ideas: 1974B - Symmetric Encoding, 1974C - Beautiful Triple Pairs, 1974F - Cutting Game.

  • »
    »
    23 months ago, hide # ^ |
     
    Vote: I like it +1 Vote: I do not like it

    C was tough or it uses some specific technique that i wasn't aware of.

    • »
      »
      »
      23 months ago, hide # ^ |
       
      Vote: I like it 0 Vote: I do not like it

      check the tuples where item of position K is unique. Tuples's positions = {0,1,2}

      I will show logic for K=0, but similar logic can be used for K = 1 and K = 2.

      For each tuple. Create a map that stores {1,2} as a key and a list of integers the 0s as values. Then sort that list. Then you can figure out how many items are strictly less than n, with a linear scan.

      • »
        »
        »
        »
        23 months ago, hide # ^ |
         
        Vote: I like it 0 Vote: I do not like it

        i did the same but miscalculated the number of tuples.I think its time for solving some Combinatorics problems.

»
23 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

Is there any solution for E using maps? If yes, can someone fix my code 261908381?

»
23 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

Hardest Div 3 ... Only div 3 B solved ... can some one tell me the logic of C

  • »
    »
    23 months ago, hide # ^ |
    Rev. 2  
    Vote: I like it 0 Vote: I do not like it

    use a map for each triple:

    count += the number of triples that have atleast 2 similar elements

    count -= the number of triples that are the exact same

    • »
      »
      »
      23 months ago, hide # ^ |
       
      Vote: I like it 0 Vote: I do not like it

      hmmm, do map can carry triplets .... i think i have to learn stl library in brief .. Thank you .

      • »
        »
        »
        »
        23 months ago, hide # ^ |
        Rev. 2  
        Vote: I like it 0 Vote: I do not like it

        I just used a map<vector<int>, int> and it passed.

      • »
        »
        »
        »
        23 months ago, hide # ^ |
         
        Vote: I like it 0 Vote: I do not like it

        map can carry any pair of datatypes(map<T,T>)

        for the case of task C, it is possible to solve it using 4 maps, 3 of them are map<pair<int,int>,int> and the 4th one is map<tuple<int,int,int>,int>(for 3 equals)

»
23 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

is D that easy ? there are a lot of submissions...how to solve it

  • »
    »
    23 months ago, hide # ^ |
     
    Vote: I like it +3 Vote: I do not like it

    the most important is to notice that the opposite directions like (N, S) and (W, E) are remove each other.

»
23 months ago, hide # |
 
Vote: I like it +2 Vote: I do not like it

I took more than one hour to solve D

»
23 months ago, hide # |
 
Vote: I like it +3 Vote: I do not like it

how did so many people understood this: each character in the string s is replaced by its symmetric character from the string r (the first character of the string r will be replaced by the last, the second by the second from the end, and so on).

I feel like I lack the ability to guess the problem statement

»
23 months ago, hide # |
 
Vote: I like it -13 Vote: I do not like it

The time limit and constraints of C could be managed better. Other than that, the problems were nice.

»
23 months ago, hide # |
 
Vote: I like it +1 Vote: I do not like it

any hint for E? I tried dp[m][x] using map but obviously I get TLE;

  • »
    »
    23 months ago, hide # ^ |
     
    Vote: I like it 0 Vote: I do not like it

    Try dp[h] = max money we can have after buying $$$h$$$

    • »
      »
      »
      23 months ago, hide # ^ |
       
      Vote: I like it 0 Vote: I do not like it

      vstiff can you tell your transitions ? for the dp states and why so reason too please

      • »
        »
        »
        »
        23 months ago, hide # ^ |
        Rev. 3  
        Vote: I like it 0 Vote: I do not like it

        Basically just two transitions:

        1) buy everything

        if dp[k] >= c {
          dp[k + h] = dp[k + h].max(dp[k] - c);
        }
        

        2) get salary

        dp[k] += x;
        
  • »
    »
    23 months ago, hide # ^ |
    Rev. 2  
    Vote: I like it +1 Vote: I do not like it

    I've solved with dp[m][total_happiness]

    obviously it passed

    • »
      »
      »
      23 months ago, hide # ^ |
       
      Vote: I like it 0 Vote: I do not like it

      Hi daud04, I see you have done recursive DP, can you please explain your solution in detail if possible? I couldn't think of a way dot it recursively as money from previously bought happiness can still be leftover and help us in future, I did it iteratively : link , If anyone else know this please feel free to pitch in.

      • »
        »
        »
        »
        23 months ago, hide # ^ |
         
        Vote: I like it +1 Vote: I do not like it

        my dp state is [index][required_happiness] and it returns the minimum required money i must have before entering the state to buy required happiness.

        (i'm just going forward here)

        as a knapsack dp, there is 2 option.

        if i buy the happiness of the index , i must have a[index] value now , and must have the to money to buy remaining happiness from next indexes, as i can store this k for next indexes , substituted k from next dp cost.

»
23 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

nice problem set! i have seen same ideas like in these problems before, but they are usually in div2 and too hard to solve. thank you for introducing them for me!

»
23 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

Really nice contest. Problems were not too difficult, and liked the problem E especially. Problem D was implementation heavy and if not for some mistakes in it and time wasted in debugging it, this would have been my first contest to solve all problems as I solved G just few minutes after contest ended :(

»
23 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

I have a bonus problem (Harder version of problem $$$C$$$) : A pair of triplet is good if elements in any two positions are not equal and equal in one position , count the number of good pairs

  • »
    »
    23 months ago, hide # ^ |
     
    Vote: I like it 0 Vote: I do not like it

    wouldn't it be equal to the total number of pairs — number of pairs with exactly 2 matches (current problem) — number of pairs with all 3 matches?

»
23 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

Tough C, I come up with the the solution pretty quickly but spent many times to implement it 261860863

And D also a terrible implementation(at least for my code) I neerly smashed my laptop when I realize what I am coding 261856874

And can someone help with my E? At first I thought it was a signed int overflow (because it did't WA until test case 10) but it seems to be more than that... 261884565

  • »
    »
    23 months ago, hide # ^ |
     
    Vote: I like it +3 Vote: I do not like it

    I tried submitting your code 261934590 and got it accepted. The idea was that a particular state can be visited many times, you assumed that it can be only once.

    Code
    • »
      »
      »
      23 months ago, hide # ^ |
      Rev. 2  
      Vote: I like it 0 Vote: I do not like it

      Oh my god, I actually have realized it but my brain didn't go right and made huge amount of small mistakes when I tried to modify it :(

      And It should have been Accepted if simply to add a more ! in my last minute submitted code rather than failed in test case 1 (:_;)

      Anyway, thank U very much orz

»
23 months ago, hide # |
 
Vote: I like it +8 Vote: I do not like it

Are all submissions tested against the test cases from successful hacks at the end of the hacking phase?

»
23 months ago, hide # |
 
Vote: I like it +3 Vote: I do not like it

Hardest div3 I've ever taken, C is harder than an average C in div2.

  • »
    »
    23 months ago, hide # ^ |
     
    Vote: I like it 0 Vote: I do not like it

    A: Really easy problem, as it should be (800)

    B: Already semi-difficult, similar to 2B in some ways (1000).

    C: Extremely difficult to implement and solve for its position, analgous to easy-mid Div2C/Div3D (1300)

    D: Easy to solve, ananoying to implement(1300).

    E: Elegant but hard. DNS (1700).

    F: Got me stuck in debugging hell for an hour (1900).

    G: DNS (2000)

  • »
    »
    23 months ago, hide # ^ |
     
    Vote: I like it 0 Vote: I do not like it

    ???

    I'm a noob and it was very easy IMO. Done it in 12 minutes.

»
23 months ago, hide # |
Rev. 2  
Vote: I like it -24 Vote: I do not like it

*Deleted

»
23 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

it-sover

got AC on D after contest simply by removing pre-check, but simulate answer then checking correctness.

»
23 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

I had the right idea on C with the three maps but I couldn't think of the way to sum them up correctly :(. Problem D was really nice, the concept and everything. E was also cool but I didn't really have time to solve it. First time I solve D and don't solve C on a contest which I didn't expect to be fair but I'll take it.

»
23 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it
»
23 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

In F, what if k is fixed in input and instead of moves being given, both players play optimally to maximize their score?

»
23 months ago, hide # |
Rev. 2  
Vote: I like it +3 Vote: I do not like it

I am surprised that ChatGPT was able to solve problem G in this round. To be more specific, I was stuck on G, so I put the problem statement into ChatGPT, which is a hot topic right now, to try to get some clues. Initially, it presented me with an incorrect greedy code (a simple greedy method of looking from the front and buying if possible). Then, I provided an example that would fail with this solution (Test Case 3: 6 4, 4 10 3 8 6 10). To my surprise, it then gave me the correct greedy algorithm using priority_queue! (This might have been a lucky punch, though)

I am unrated so I am not particularly affected, but for contests like div-3/4 with many typical problems, ChatGPT might be able to solve quite a lot of them...... (I haven't tried it yet, but I think it can also solve problems like F, which have straightforward and typical approaches but may be a hassle to implement.)

(My prompt: https://chatgpt.com/share/05ad0c4b-33a1-4480-8f46-c7a87a60f019 we need to fix some details (input and the timing of adding X), so we can't just copy and submit, but the main idea is totally correct. I think if the prompts were further elaborated, the code will follow those instructions too.)

»
23 months ago, hide # |
 
Vote: I like it +1 Vote: I do not like it

Thanks for such a great contest. I loved it

»
23 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

How to solve C?

Can anybody please tell me why I'm getting WA on test 4? Submission

  • »
    »
    23 months ago, hide # ^ |
     
    Vote: I like it +1 Vote: I do not like it

    With 1 <= a[i] <= 1e6 then these may not work:

    int abc = (v[i]*100)+(v[i+1]*10)+v[i+2];

    int _ab = (v[i]*10)+v[i+1];

    int _bc = (v[i+1]*10)+v[i+2];

    int _ac = (v[i]*10)+v[i+2];

    I think you can use pair instead of combining into a single int value.

»
23 months ago, hide # |
 
Vote: I like it +43 Vote: I do not like it

G was pretty similar to this problem: 1526C2 - Potions (Hard Version)

»
23 months ago, hide # |
 
Vote: I like it +6 Vote: I do not like it

Great contest, but I think that problem A could have been written in a better way: there are too many people who did it after 10 mins, meaning that the statemenet was not clear at all. Something like "an app can only be placed on a single screen" would have been enough. I was (wrongly) thinking of application on multiple screens, so that, e.g. 4 screens could contain 15 y app. Hope next time I'll be sharper in statement comprehension

»
23 months ago, hide # |
Rev. 2  
Vote: I like it 0 Vote: I do not like it

Please explain why D is failing on test 4 261864972.

»
23 months ago, hide # |
 
Vote: I like it +3 Vote: I do not like it

Can someone explain why my solution 261888809 with $$$N=10^5$$$ failed, but the same solution 261919448 with $$$N=$$$$$$\sum\limits_{i = 1}^mh_{i}$$$ passed in 1974E - Money Buys Happiness where $$$N$$$ is the maximum number of elements in $$$dp$$$ array. I guess my time complexity is $$$O(N*M)$$$ which should pass. And what does this statement It is guaranteed that the sum of $$$\sum_{i}h_{i}$$$ over all test cases does not exceed $$$10^5$$$ means?

  • »
    »
    23 months ago, hide # ^ |
     
    Vote: I like it +3 Vote: I do not like it

    I got the same TL as you because I initially did dp with $$$5 \cdot 10^4$$$.

    The problem is $$$t \lt = 1000$$$, so taking in your case dp till $$$10^5$$$ will make the worst case of $$$10^5 \cdot 10^3 \cdot 50 = 5 \cdot 10^9$$$, which is too much. (in my case it was twice less, but still too much).

    But taking $$$N = \sum_{i = 1}^m h_i$$$ resolves this, cuz then the worst case will be $$$m \cdot \sum_{i = 1}^t N_i$$$, but we know that sum of all $$$N_i$$$ over $$$t$$$ cases is not greater than $$$10^5$$$, then the worst case will be $$$50 \cdot 10^5 = 5 \cdot 10^6$$$ which is good enough.

    • »
      »
      »
      23 months ago, hide # ^ |
       
      Vote: I like it +3 Vote: I do not like it

      Oh yeah, now I realised when you mentioned it, basically overall time complexity is $$$O(T*M*$$$$$$\sum_{i}h_{i})$$$ and they have mentioned that $$$(T*$$$$$$\sum_{i}h_{i})$$$$$$\leq10^5$$$ so worst case will be $$$5*10^6$$$ which is fast enough whereas in my case, it will be $$$5*10^9$$$ which is TLE. Thnx mate.

»
23 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

C was unusually hard for Div3. E was nice.

Hopefully back to blue after this one.

»
23 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

I got the correct intuition for C but then I thought HashMap<Integer,HashMap<Integer,HashMap<Integer,Integer>>> must not be the intended solution, should have continued

»
23 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

Is E solvable using recursive dp?

»
23 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it
»
23 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

Problem B is getting too many successful hacks. Can someone tell me what seems to be the problem with the solution approach of those who are getting hacked.

  • »
    »
    23 months ago, hide # ^ |
     
    Vote: I like it +14 Vote: I do not like it

    what they did wrong was they declared the answer as an empty string and instead of pushing m[s[I]] back , all of them added it to the current string and replaced the current string. This made each operation having a cost of i(current) length , giving the end time complexity of O(n^2)

    Wrong approach => ans = ans + map[s[i]]

    Correct approach => ans.push_back(map[s[i]])

  • »
    »
    23 months ago, hide # ^ |
     
    Vote: I like it 0 Vote: I do not like it

    unordered_map is easily hackable. Don't know what's wrong about default map solutions.

»
23 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

can we solve E with recursive dp ?

»
23 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

I would appreciate your kindness if any of you could just debug my code for E, Thanks. https://mirror.codeforces.com/contest/1974/submission/261937456

»
23 months ago, hide # |
 
Vote: I like it +3 Vote: I do not like it

good round, especially like F and G this round.

»
23 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

20 lines of code for problem D

link

who less?

  • »
    »
    23 months ago, hide # ^ |
     
    Vote: I like it 0 Vote: I do not like it

    Little suggestion to turn 20 lines of yours to 15. Check this part:

      for(char c: ss){
        if(c == 'W') pm['W']++;
        if(c == 'E') pm['E']++;
        if(c == 'N') pm['N']++;
        if(c == 'S') pm['S']++;
      }
    

    Simplify it to for(char c: ss) pm[c]++;. Easier debug this way too.

»
23 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

Only if I wouldn't have spent so much time on C :(

»
23 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

for Problem E, is it the right approach to find the minimum number of money required to obtain x amount of happiness given i months using dp?. And then check what is the maximum possible happiness for which he can pay the money.

  • »
    »
    23 months ago, hide # ^ |
     
    Vote: I like it +1 Vote: I do not like it

    Yeah. it's right. I did the same way.

    • »
      »
      »
      23 months ago, hide # ^ |
      Rev. 2  
      Vote: I like it +3 Vote: I do not like it

      Thats great.Can you please explain what were transition eqn. you wrote, I am not able to find bug in my code

      • »
        »
        »
        »
        23 months ago, hide # ^ |
         
        Vote: I like it +1 Vote: I do not like it

        knapsack

      • »
        »
        »
        »
        23 months ago, hide # ^ |
         
        Vote: I like it +1 Vote: I do not like it

        as a knapsack dp, there is 2 option.1. if i buy the happiness of the index , i must have a[index] value now , and must have the to money to buy remaining happiness from next indexes, as i can store this k for next indexes , substituted k from next dp cost.

»
23 months ago, hide # |
Rev. 2  
Vote: I like it +3 Vote: I do not like it

My ugly solution for D, but it works.

C and D are much tougher than regular Div3. Btw, a tip for the likes of D is jotting down all possible negative cases first, then either deal with the correct one or a much more trivial yes-or-no decision making.

Btw, anyone having a hint for G? I have a few ideas but I'm afraid I was overthinking at contest... (Nvm, I read a comment above and realized I was way too stupidly overthinking... T.T)

»
23 months ago, hide # |
 
Vote: I like it +5 Vote: I do not like it

Thanks for the contest! The problems were of pretty good quality as compared to recent div3 rounds. Hoping to reach Expert by the end of main tests!

»
23 months ago, hide # |
 
Vote: I like it +1 Vote: I do not like it

implementation forces with too easy G. E and F were better imo.

»
23 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

What are some approaches that can be used to solve F? I was thinking either some sort of dp or something with geometry. That is to say, we somehow determine the number of points in a bounding box, and each cut makes this bounding box smaller. Then, by keeping a record, we can determine the numbers of points obtained for each cut. Or are these ideas a bit to "direct"?

  • »
    »
    23 months ago, hide # ^ |
     
    Vote: I like it +1 Vote: I do not like it

    It's direct, but it's kinda the motive of it. When moving the bounding box, you'll figure the points that would be left out of the box.

    Maintaining those points would require a sorted data structure with add/find/delete operation — as this data structure should add the points initially, find the points that are before/after a certain threshold, and delete those points. Still the number of points in the original box is quite large, so these operations should be fast enough instead of a naive linear one in array. For my most convenience, AVL/RBtree-based data structures (i.e. set at C++ and TreeSet at Java) should work well enough.

    • »
      »
      »
      23 months ago, hide # ^ |
       
      Vote: I like it 0 Vote: I do not like it

      Can you explain your idea of how you deleted elements from the opposite dimension. I mean, if the move is U or D, how did you deleted those coordinates from the data structure where the coordinates are stored optimally for L/R operations (if you even are using a 2nd DS for that matter) ?

      • »
        »
        »
        »
        23 months ago, hide # ^ |
        Rev. 2  
        Vote: I like it 0 Vote: I do not like it

        First, my solution, just in case my words were unclear.

        We'll store two different sets for two dimensions, each will store a tuple $$$(x_i, y_i, i)$$$, and sorts them accordingly by the dimension defined. Thus, each point has two copies: one at the L/R set, the other at the U/D set.

        If cutting from a dimension, for example L/R, we can list the tuples that would be excluded from the L/R set, thus getting their indices in the process. With the indices, we can reconstruct the corresponding tuples from the other U/D set, and delete them as well. With this, each tuple will only be accessed/constructed/deleted twice at most, keeping everything $$$\mathcal{O}(n \log n)$$$ just fine.

»
23 months ago, hide # |
 
Vote: I like it +15 Vote: I do not like it

Oy blin I had fun this round. E was pretty, unfortunately I couldn't solve it.

»
23 months ago, hide # |
 
Vote: I like it +3 Vote: I do not like it

The naming of problem 'E' is really interesting!!!

»
23 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

I read so many comments about C being too hard. Can anyone tell me what was so hard about it? Wasn't it a simple map count problem? If it were Div.2 I would've used better hashing just to be more sure.

  • »
    »
    23 months ago, hide # ^ |
    Rev. 2  
    Vote: I like it 0 Vote: I do not like it

    I think it's not very easy to come up with the idea of counting each pair (1-2, 2-3, 1-3) individually, as well as it's not something you'll see much in easier problems to count a pair or a tuple as a whole. If you're used to such problems then it's easy, but not for most (like, 2/3 of the official participants) who need to challenge 3C problems.

»
23 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

For problem G, can someone please spot the error in this code . I am trying to use a multiset to store the costs at which happiness has been bought and then using the upper_bound function.

#include<iostream>
#include<vector>
#include<set>
#include<algorithm>
typedef long long ll;
using namespace std;
int func(auto &cost,int m,int x){
    multiset<int> s;
    int cur_money=0;
    for(int i=0;i<m;i++){
        if(cur_money>=cost[i]){
            cur_money-=cost[i];
            s.insert(cost[i]);
        }
        else if(!s.empty()){
            auto up=upper_bound(s.begin(),s.end(),cost[i]);
            if(up!=s.end()){
                cur_money+=*up-cost[i];
                s.erase(up);
                s.insert(cost[i]);
            }
        }
        cur_money+=x;
    }
    return s.size();
}
int main(){
    int t;
    cin>>t;
    while(t--){
        int m,x;
        cin>>m>>x;
        vector<int> cost(m);
        for(int i=0;i<m;i++){
            cin>>cost[i];
        }
        cout<<func(cost,m,x)<<endl;
    }
    return 0;
}

»
23 months ago, hide # |
 
Vote: I like it +6 Vote: I do not like it

Just had a look at the problems and Kudos to the authors for constructing such a great problem-set. I absolutely loved the similarities/differences (and their implication) between problems E and G.

»
23 months ago, hide # |
 
Vote: I like it +5 Vote: I do not like it

hey MikeMirzayanov what is this partial behaviour towards flagging solutions.

This user -> looneyd_noob is out of competition for the solution: https://mirror.codeforces.com/contest/1974/submission/261894175 but i also noticed the solution of this user -> Shaxx19 who is not out of the solution even having a very similar solution just variable name changed and some comments added and even submitted 10 minutes later; this is his solution https://mirror.codeforces.com/contest/1974/submission/261900757 the entire nested for loop is same with same indentation. Man he needs to get out of contest, you are doing very wrong and people's trust will reduce from this platform. Please get him out of competition.

»
23 months ago, hide # |
 
Vote: I like it +4 Vote: I do not like it

hey MikeMirzayanov what is this partial behaviour towards flagging solutions.

This user -> sjy is out of competition for the solution: https://mirror.codeforces.com/contest/1974/submission/261826313 but i also noticed the solution of this user -> frank11_sjy who is not out of the solution even having a very similar solution just variable name changed and some comments added and even submitted later; this is his solution https://mirror.codeforces.com/contest/1974/submission/261825867 the entire nested for loop is same with same indentation. Man he needs to get out of contest, you are doing very wrong and people's trust will reduce from this platform. Please get him out of competition.

  • »
    »
    23 months ago, hide # ^ |
     
    Vote: I like it 0 Vote: I do not like it

    yes there are various cases i noticed also like @sjy @rohan786 @frank11_sjy @kovi05007 who seem to have similar maybe they use ideone

    • »
      »
      »
      23 months ago, hide # ^ |
       
      Vote: I like it 0 Vote: I do not like it

      Hope this is their first mistake, hope mike can cancel their div3 competition score and give a penalty warning

    • »
      »
      »
      23 months ago, hide # ^ |
       
      Vote: I like it 0 Vote: I do not like it

      Bro, I want to ask if MikeMirzayanov will solve it if I complain here.