Hi everyone!

I would like to invite you to another one of our rounds, that I set with my friends Jeel_Vaishnav, FastestFinger, Utkarsh.25dec, the_hyp0cr1t3 and ridbit10

We had two approved contests, but decided to merge it into one with more logical thinking ^_^

The round Codeforces Round 685 (Div. 2) that will take place on Nov/21/2020 17:35 (Moscow time). If your rating is less than **2100**, this round will be rated for you; otherwise, you can participate out of competition.

I would really like to thank my co-setters and:

- 300iq for coordinating our round and always replying quickly.
- jtnydv25, antontrygubO_o, Monogon, Vivek1998299, tejas10p, l_returns, T1duS, kshitij_sodani, smile_boi, Ajax, JeevanJyot, ViciousCoder, Prosaic_26, vatsals1, saarang, _Damon, sac2607, matterhunt, Matir, Black_Eye, vatsal_nagelia, kalki411, ekanshi, Idkwhoami and vishesh312 for testing the problems.
- the_hyp0cr1t3 and ExplodingFreeze for testing as well as proofreading and making suggestions for the problems.
- MikeMirzayanov for Codeforces and Polygon platforms.

You will be given **6 problems** with one additional subtask and **2 hours 15 minutes** to solve them.

Good luck — let the games begin :D

**UPD 1**: The revised scoring distribution will be: $$$500 - 750 - 1250 - 1750 - (1500 + 1000) - 3000$$$

**UPD 2**: Editorial — Hope you guys enjoyed the round, we will hopefully be back sometime next year :)

**UPD 3:** Congratulations to the winners! :D

All Participants:

Official Participants:

As a tester, I haven't tested yet.

EDIT: I have just tested, and would like to say Ashishgup orz

As a tester, I knew that Monogon will be here for contribution:)

As a contribution, give me Monogon. :)

me toooo

I think twitter is more suitable for getting you the justice you deserve

destroyed in seconds op

As a Digon you have my upvote

Dad, you're embarrassing me

Nothing to be embarrassed of, I'm proud of the contribution you have and I see many more coming :)

cute!

Hi Great Great Great Great Great Grand Father !!

My curious mind wanna know relation between of yours Digon and Monogon

"mono" usually means one

"di" and "bi" usually mean two

Its like with monochromatic and dichromatic

What about Nonagon ?

Father and son XD

As a (first-time) tester, my name is not in the list :(

UPD: Now it is.

As a tester me too.

As a first time tester, can I get some contribution?

Sure :)

I too am first time tester :p

Monogon is Donald trump of code forces!

was it a Compliment or something else?

He did make codeforces great again tho :/

In your CV/Resume make sure to mention "Past Job Experience : Tested more than half of the CF rounds."

Well that was a pleasant surprise, yet another Ashishgup round :)

ORZ Ashishgup

And I wish all the best for all those who are going to give this round...

Indian Round

** Indian Round by Ashishgup

**Indian Round by Ashishgup,Jeel_Vaishnav,FastestFinger,Utkarsh.25dec,the_hyp0cr1t3 and ridbit10

.

The game will be played between Ashishgup and FastestFinger , I guess.

In game, Ashishgup will play first move XD.

.

If I am able to solve problem A easily then it's not a Ashishgup round i was expecting.

Looks like Ashishgup didn't get placed LOL so he is setting up contests.

forget about him if he is placed or not are u placed or not ? he is already a grandmaster and u are saying he is not placed , what are u saying please check to his linkedin profile !! you will say then awoo tourist vovuh and all those who are preparing contests for all of us are not placed !!

don't make any assumptions yourself !! attend the contest solve the problems !!

Hoping for a good round with good problem sets Ashishgup as always!! all the very best everyone !!

Chill bruh was making a joke.

Fun fact: Jokes are supposed to be funny.

(I know comedy is supposed to be subjective, but this was objectively unfunny.)

These guys have 100 hrs in a day!

AshishGup round:- Be ready for Interactive problems :)

:D

there is div3 contest this month or not ?

Yes.. After 4 days div3 will be held. See the codeforces calendar. You can add it with your google calendar. It's so helpful.

Another Indian Contest...... India OP!!!

you're right, it's very OverPopulated

India Over Powered . . . . More population means more downvotes on your comment

yeah overpowered caste system, religious violence, corrupt low iq leaders, trashy education system, garbage filled streets....

Though these all... We are doing exceptionally well in various fields... And you are commenting on the contest made by an indian...

who I'm pretty sure relied on external sources for his education, there's nothing Indian about it. If anything, he reached this level despite what India had to offer in terms of education.

please do not show your pessimism over here, even I am an Indian and gone are the days when we needed to solely rely on external(Here I think you mean foreign country) resources because we have our own set of good programmers and resources now thanks to many great efforts mostly in the form of YouTube Channels(Especially Codechef nowadays and individual efforts too by striver_79 demoralizer kazama460 and many others too.). But just think would we all would have grown to the extent that we are individually as a University or from any single Country. No, the sharing of knowledge and the Competition makes us all grow better and faster.

I'll probably be downvoted here but just being honest.

I myself relied a lot on external sources.

Right, we all have learnt from external resources. I don't see how, it is a bad thing though. It just shows we are eager to learn and contribute further building on what already is there. Don't forget the good things people have to say about Indian youtubers(speaking of external resources) teaching stuff. Also More Population = More Competition = Better Stuff in the long run.

I'm simply trying to refute the comment above that says India is OP when it's clearly not, i don't get what your point is. I don't mean to belittle the efforts of those "Indian" programmers, but let's be real here, their channels talk about a very small subset of what is out there related to CS, do you really think that's equivalent to a quality CS education? Also we're talking about a very small minority here(competitive programmers), most students are just having their time wasted by the system as we speak. For sure there are talented people in India too, all I'm saying is the system is only slowing them down.

By saying India OP.. He was just cheering up.. And maybe you had a funny/sarcastic intention but think about the subject of your comments initially.. Making fun of population of any country can be seen as rude

a statement being rude doesn't necessarily make it false, people should develop a bit of tolerance, it's very easy to live in a fairytale being in denial of the problems that surround you. Pointing out the problem or ridiculing it helps expose it.

let me ask you one thing what country are you from? because every country has its problem. i m not denying that india doesnt have problems but we are trying to solve those and even if you want to expose our problems do it in a polite manner that doesnt hurt other feelings. our roads might be filled with garbage but your mind and mouth is filled with a lot more and a piece of advice instead of wasting your time here writing stupid comments and creating controversies why dont you participate in a contest and get atleast rated

I'm Indian. Every country has it's problems for sure, but some are way worse than others, like this one. I don't think i was being too rude, you guys are too sensitive. Calling my comments stupid is easy, give me valid reasons for why they're stupid. I'm doing good on my original account.

Yeah every country has its problems and making fun of your own country's problem on an international platform is in no way gonna solve your country's problems. If you can't contribute to solve those problems then simply stfu

i disagree, i personally changed my mind about a lot of things by listening to other people ridicule and criticize my ideas, and I've seen it work for lots of other people too. Ridiculing is helpful as it exposes how truly ridiculous your opinions were, politeness doesn't always work, people don't take you seriously if you're too polite, speaking from experience. Also, I am working on some stuff atm that'll improve the quality of education here hopefully, but i wouldn't tell someone to stfu because they're not contributing, either what they're saying is valid or it isn't, them contributing has nothing to do with the validity of what they're saying, unless it's directly related to contributing.

Good to know that you are contributing to the Education but I think you should be sensible enough to not respond to those over-patriotic cringe proud comments everywhere. They will naturally get downvoted. Nothing can't be done about them. But ridiculing your own country's problems on an international platform in no way makes sense to me. If you think that you can contribute to solve or reduce the intensity of those problems. Then just do it internally. If you think ridiculing your country's problems on an international platform will expose them, then you are wrong. You will only motivate the racists that are everywhere. If you don't believe me you can read comments on this blog. It's just one example of many such occurrences. I know I am gonna be downvoted on this one. But that's what I wanted to say. Peace Out

"If you think ridiculing your country's problems on an international problem will expose them, then you are wrong. You will only motivate the racists that are everywhere."

I agree that there is some truth to this, I'll be more tactful next time. Yes I did expect a lot of downvotes from cringy patriots, but I said it anyway for the non-deluded crowd just to make them think about it, but i guess i could've done it in a more civil way. Appreciate the reply.

Bhai, Hum aapko hi vote denge, aap election me to khade ho jayiye, kaha aap yeh competitive programming ke chakkar me phas gaye

he(and a lot of other people) excelled growing in the Indian environment even if they used external sources. And there are good sources in India as well. So, I don't see any point here.

Please tell me what the "Indian environment" provides, and why aren't most people like him if it's the magic of the "Indian Environment".

I'm not denying the existense of good sources in India, I'm saying most sources are trash.

"So, I don't see any point here"

You're speaking as if it's very apparent that there's no problem with our education system. Do you really think that? Do you think most teachers out there are passionate about the subjects they're teaching? Do you think they teach well? Do you think they can take criticism about their teaching without getting offended and taking it out on their students? Seriously?

Yes, there are problems. More than often, I have cursed the Indian Education System myself. But u were simply being disrespectful. There is a way to put your opinion on a public platform. I am not saying that there is some magic in "Indian Environment". I was just putting forth the point that people excel in our environment as well.

Yes i agree that I could've expressed my points in a better way, I'll give you that.

"I was just putting forth the point that people excel in our environment as well"

And i agree, there are people like that, but that doesn't necessarily mean that the environment itself is generally good, because if it were, we would see Ashish Guptas everywhere (not implying that everyone should be like Ashish Gupta, I'm just giving an example).

yes, the number of good coders in India is very less. And none of the top 20,30 coders are Indian. Even in software area we are pretty weak in innovation. That is the reason we are producing CEOs like Sundar Pichai and Satya Nadella but not people like Bill Gates and Mark Zuckerberg and Elon Musk. We have come a long way, but we still have a long way to go.

Most people in any country don't start out in cp using their country's education system, at least I don't think...

SALLE Bhosideke.

I am offended by something I completely agree with.

ah, whats an Indian round without a mandatory thread like this

This guy Ashishgup has different level fan base.

As a tester, I would highly recommend this round.

Machaya bhai!!!

hrishabh314, dekh.

aaj kal to kya hi kharab halat chal raha bhai ... itna assignments aur projects hai ki cc ho hi nahi pa raha!

I think you should delete 'Announcement of Codeforces Round #359 (Div. 1)' ;)

I just love Ashishgup rounds.

As a CP enthusiast, can I be a tester?

Ashishgup Merging two approved Div-2 contests into one indicates we can expect round to be slightly hard and having more challenging problems?

It's a trap.

Welcome to another Indian round. I hope everyone good ratings.

you hope, but it's not possible that everyone will have a good rating.

Interesting math problems expected from these setters :P

as a contestant, i want my losing rating back :)

As a tester,

Omg Indian round! So excited

Kinda like the 2:15/2:30 hr format for the rounds. Hope it stays ^^

Trying to get the contribution .....

Hope it's not like the last two rounds =)

(specially the one who had c1 and c2)The great Ashishgup is back

The tag of the blog

Announcement of Codeforces Round #359 (Div. 1). When you open #359 you see an extra announcement in the contest materials section which redirects to this blog. Isn't misleading to use a wrong tag?I think it is a mistake. This announcement has wrongly been routed to that round. My guess is you won't find this announcement in today's round's contest materials.

Are previous rating changes rolled back? I can't see my rating changes for last two contests

I'll participate

Nikhil_Medam where you at?

Probably giving a contest from your account.

I asked him give more but he said free boosting is over now ;_;

Hoping to stay in div1

gl

another bitforces will be happend

A > B and wrong on test 2 whenever the problem setter is Ashishgup.

ITS LIT!

Hope that I'll get the lost ratings in this round :)

why Monogon gets this much upvotes more than any red?any reasons?

Because most other reds are smart and decided not to waste time farming contribution.

do you mean creating second account named diagon?(just a joke as I don't have any proof :rofl:)

I confirm it's not him, also there's nothing like

"Diagon"it's digonNice contest, thank Ashishgup and your team. Goodluck to everyone !!!

Ashishgup orz.

This guy has a different level fan-base.

demoralizer

rotavirus

(Also, since I'm not a setter/tester of this contest, this is veryyy irrelevant)

You can become one. Just join the stack outside Mr Gupta house.

*queue

Just ask any CF coordinator. Mr Gupta hates queue.

Thank Ashishgup and your team for creating a contest for us ^_^

Thank Codeforces for creating a contest site.

Goodluck to everyone !!!

Just asking since E1's score is 1500, will it be easier than D whose score is 1750 ?

On last div2(not edu.) B's score was 1000 and C1's 750. Was C1 easier than B?

You don't trust scoring distribution nowadays. Especially not in Ashishgup's rounds.

I hope there is no game theory problem.

I am confident enough that this round is going to be div 1.5

It's time for Ashishgup to make a jump in the top contributors list.

Wishing high rating to all of you. Good Luck for the contest

good luck for everyone

Nice contest Ashishgup

Got destroyed

D has the similar idea with AGC002E.

E1 and E2 is really interesting.

Thanks for the contest :)

How to solve C?

HintTry to store things in frequency array (number of times such charactor $$$c$$$ represent in string $$$s$$$)

HintWe can always swap array whenever we want without affecting increasing work

HintWe can only increase the whole $$$k$$$ charactors equal to $$$c$$$ if $$$c$$$ exists atleast $$$k$$$ times

HintWe will compare in order of small to larger. And increase whenever necessary. But if there is no valid smaller elements than the current $$$b[i]$$$ (valid here means it exists atleast $$$k$$$ times), then the answer will be "No"

Ugly code - But just for referenceThis is whining because I made several wrong submissions, but I think A is too hard. I think A in any contest should be trivial to every official participant — more like a registration button than an actual problem. If we are talking about div 2, it should not contain almost any observations, just implementing what you're reading.

A is trivial. Look at the number of submissions

I got 4 WA on A and almost kill myself when got AC

Lol

Seems like you're new to Ashishgup rounds

Then people will say they were judged in A on the basis of typing speed and not thinking skill.

There should be some sort of idea involved , it can be very basic though for A .

Note : I solved A after more than 3000 people solved but i don't think it was not suitable for being A.

If I may offer my opinion as a tester, today's A is more prone to being WA'd by higher rated participants than lower rated participants, more CM+ testers went along the wrong route of divide then subtract than our specialist / expert or lower testers. Also I am curious what your solution was? The intended solution was min(n — 1, 2 + (n & 1)) (Odd -> Even -> 2 -> 1).

yep, this made me leave this contest also somewhat similar to this problem : https://leetcode.com/problems/minimum-number-of-days-to-eat-n-oranges/ .

A had literally 1 observation: if n is even, it can be reduced to 2 in 1 step. Also all the corner cases were already present in the samples.

1 observation too much.

I think A was easy but probability of WA was greater for A than usual

Many other A's in div2s are like that (not direct implementation). Its better that way maybe as there is also a div 3

I know that feel

Spent 25 minutes and two WA on A

But somehow it was obvious for thousands of other contestants

I was so frustrated that I couldn't solve A. Ruined the whole contest for me. Solved B and went to sleep.

Thanks for the great contest! How to solve E2?

Let's say the answer array named

`A`

. Use the value of`A[1]`

(which is at first still unknown) as a pivot, ask the`xor`

value between`A[1]`

to the rest of the number, and keep those values. At this moment, you already asked`n - 1`

queries.Then, look into your

`xor`

-s values, if there is at least two same`xor`

result in different index (let's say index`i`

and`j`

), you can ask the`and`

value of index`i`

and`j`

. The`and`

value must be`A[i]`

and`A[j]`

since it is the same. Then conclude`A[1]`

and the rest of the array. You only use in total`n`

queries for this case.If there is no same

`xor`

values, then the array must be a permutations of`0..n-1`

. To find the value of`A[1]`

, you can use the index which has the`xor`

value 1 and 2 to`A[1]`

, let's say the index is id1 and id2. Then, ask`and 1 id1`

and`and 1 id2`

. From here, you know the correct bits of`A[1]`

except for the least 2 bits. For the most right bit (the least one), you can use the result of`and 1 id2`

since the difference must only occur in the 2-nd least bit. For the 2-nd most right bit, use the result of`and 1 id1`

since the difference must only occur in the least bit. Last, construct`A[1]`

and conclude the rest. You only use in total`n + 1`

queries for this case.It is simpler to look for 0 and n-1 xor values in the second case since n is a power of 2. These two numbers should differ in each bit. Then we can ask for ANDs with some third number and find those numbers with bitewise operations.

It's clear that either there exists $$$a_i$$$ and $$$a_j$$$ that satisfy $$$a_i=a_j$$$, or $$$a$$$ is a permutation.

For each $$$i>1$$$, query the XOR of $$$a_1$$$ and $$$a_i$$$ and let it be $$$X_i$$$.

If there exists $$$X_i=X_j$$$ (this can be checked with $$$O(n)$$$ complexity), it's obvious that $$$a_i=a_j$$$, so we just need to query the OR of $$$a_i$$$ and $$$a_j$$$ to get $$$a_i$$$ and then work out the whole array.

Otherwise, as $$$a$$$ is a permutation and $$$n\ge4$$$, there certainly exists $$$a_{k_1}$$$ and $$$a_{k_2}$$$, where $$$a_{k_1}\oplus a_1 = 1$$$ and $$$a_{k_2}\oplus a_1 = 2$$$. We query the OR of $$$a_{k_1}$$$ and $$$a_1$$$, which is equal to $$$a_1$$$ except for the last bit. Then we query the And of $$$a_{k_2}$$$ and $$$a_1$$$, which is equal to $$$a_1$$$ at the last bit. And therefore $$$a_1$$$ can be calculated, so as the array.

How to solve D?

You look at the point with maximum x, such that (x, x) is inside your circle. If any move from (x, x) loses, player 2 wins. After the first move, the state will be (0, k) and player 2 simply plays copy-cat, (k, k). This way we reach (x, x) when it's the first players turn, so he loses. In the other case, player 1 wins. I will let you find the proof and if you can't I will provide one

please give proof.

you can see that $$$ d^2 >= (a * k)^2 + (b*k)^2 $$$, where $$$a$$$ and $$$b$$$ denote total up and right steps taken, now you can notice from the parity of $$$a + b$$$ whose move it is, now parity of all the maximum value of $$$a + b$$$ distance we will be same, so just calculate it, and that will be your winner.

Ok, in the second case, the second player won't want to do the same copy-cat thing for every move, obviously. At some point say we have (a, a). First player moves (a+k, a). Now say this is the turn when the second player doesn't want to do the copy-cat thing and moves (a+2*k, a). Player one moves (a+2*k, a+k). Now, if player 2 wants to avoid (a+2*k, a+2*k) that results in loss, he will move (a+3*k, a+k). This constant 2*k will give player 1 the win.

ok.... Thank you

Update: Solved. The problem is in my loop range. Why my code gets WA? My code

how to solve A ?

if N is even then ans is 2 else ans is 3 base case is for n=1,2,3

The question states that division by proper divisors is not allowed. So, it makes sense to keep the number even all the time. If you keep it even, you always can divide by its greatest proper divisor i.e.

`n/2`

.When n is odd, decrease it by 1. When it is even, divide it by

`n/2`

(the greatest proper divisor). This is the optimal strategy.How to solve problem E2 ?

My guest is to solve with the case of n = 4, then find use the same code for the case n > 4, but I have not figured it out yet :((.

This will not work.

Actually, there is a method to deal with 1451E2 - Битовые запросы (усложенная версия) with no more than n queries and the contrast that n is a power of two is not needed.

Queries

`XOR 1 i`

for $$$2 \leq i \leq n$$$, the return value store in an array`a`

.If all elements in

`a`

are all disjoint, then the`ans[1]`

must be the only number in`[0, n - 1]`

which not appear in`a`

~.(**not true**)Else there must be at least one pair $$$2 \leq i,j \leq n, i \neq j$$$, such that

`a[i] == a[j]`

, so query`i, j`

, the return value will be`ans[i]`

, so`ans[1] = ans[i] ^ a[j]`

Then

`ans[i] = ans[1] ^ a[i]`

for $$$2 \leq i \leq n$$$.UDP: sorry, my method have a bug, thanks to ExplodingFreeze

Distinct xors will not be sufficient to calculate a distinct array, consider:

xors:

`0 1 2 3`

This can be

`0 1 2 3`

OR`3 2 1 0`

Note that

`a[i]`

donate the return value of Queries`XOR 1 i`

. so I don't understand you.Sorry, I misread your original comment, check my updated comment now.

I think in this case you have to use the fact that you will have XOR of all ones somewhere. So you have $$$a$$$ and $$$b$$$ with exactly opposite position of 1's. Then you take a third number $$$c$$$ and query $$$c$$$ AND $$$a$$$, and $$$c$$$ AND $$$b$$$, the OR of the two results gives you $$$c$$$ (and then you know the whole array because you have XORs).

WHAT THE HELL WAS PRETEST 2 OF C ..!!! :-(

+1

I am afraid you did not consider alphabetic order. For example, 'jjjj' and 'eehh' should print "No" since j cannot be e. I passed pretest 2 after considering it, ultimately failed though :(

what is the value of k in this case?

k=2, but I guess it would be the same when k=1

true

How to approach problems like D in general? Is there any specific approach? This time I was able to guess the solution for D after thinking for an hour.

In this D I used Hit and Trail LoL.

Well you notice that you need exactly some linear number of operations. So inuitively you just find all a1^a2, a1^a3 ... a1^an. We do this because, from here, if in three operations we can get a1, a1^a1^ai = ai for any i. And the way to get a1 is to also find a1&a2, a2&a3 and a3&a1. Now all you have to do is notice that s1 = a1+a2 = a1^a2+2*a1&a2 and so on for any two numbers. Solve these three equations and three variables. you'll get a1 = (s1-s2+s3)/2. And then we are basically done. Total n+2 ops.

This is solution to E ig. OP asked about D.

Sorry I think you misunderstood I was asking the solution to D not E1

Here's my approach. I hope you are familiar with the traditional

Nim game of 2 pilesin game theory. i.e.Suppose there are 2 piles of equal number of stones and in one move a person can remove any non-zero number of stones from a single pile and the first one to run out of moves loses the game.The winning strategy for the 2nd guy is making the same moves as that of 1st guy but in the opposite pile to that of 1st guy.

The idea behind this strategy is to maintain symmetry at every point in the game.Now if you observe carefully, similar kind of symmetry is prevalent here. A move in horizontal and a move in vertical direction is equivalent to moving a distance of d*(sqrt(2)) radially along x = y line. so when our opponent makes a vertical/horizontal move, we counter it with a horizontal/vertical move respectively in order to maintain symmetry.

By ensuring that this symmetry is maintained throughout the game you can figure out the strategy for optimal moves just as done in nim game.Edit: A much clear way to present the other idea would be think of 2 piles (1 for horizontal moves and another for vertical moves). Each pile has n moves. A guy is allowed to pick a single move on his chance. This is again classical nim game. The second guy picks a move from the opposite pile and can easily win. In case one pile has n+1 moves, then first guy wins.Hope this helps a little :P

That was an OP contest. Really good stuff.

for E1 i found xor, and of a1, a2, then xor, and of a2, a3, then found a1 + a2, a2 + a3, a1 + a3 using some formulas, then i tried to find rest a4, a5 ... using xor a1 ^ ai. got wa4, was i close to right solution?

I use the same method and got passed, don't know about the actual test case tho.

I was trying the same idea but this will lead to n+3 queries.. Couldn't reduce it by just one :(

E: found the issue, you can get a^c from a^b^b^c

Actually, if you know a1 xor a2, a2 xor a3, then you can know a1 xor a3 = a1 xor x2 xor a2 xor a3.

So how can I find a1 anyway?

SpoilerSUMAB = XORAB + 2 * ANDAB

SUMBC = XORBC + 2 * ANDBC

XORAC = XORAB ^ XORBC;

SUMAC = XORAC + 2 * ANDAC;

a2 = (SUMAB + SUMBC — SUMAC) / 2;

a1 = SUMAB — a2;

a3 = SUMBC — a2;

What a bitwise math. Thanks!

ANDAC = ANDAB & ANDBC;

Well, This is wrong.

eg) a = 1, b = 0, c = 1

a & c is 1 but (a & b) & (b & c) is 0.

Oh i get it, thats why i got wa4, thank you

Ohhhhh.... damn.. sad I was v v close :(

ty anyways!

if you know, a^b and b^c, then a^c = a ^ b ^ b ^ c, no need to query it. Same with &

How to do D :(

think about symmetry strategy, for example:

(0, 0) =>

(0, k) =>

(k, k) =>

(k, 2k) =>

....

Why is this working?

Each player can push the game to the maximum number of safe moves by increasing the smaller axis.

So, the answer will be whether that maximum number of safe moves is even or odd.

Anyone who faced issues (TLE) in C with python?

See this https://codeforces.com/blog/entry/71884

I used fast i/o during my second submission and still got tle on pretest 4.

fast i/o is not always enough. I got tle even using pypy. Then just added this 2 line to my code and pretests passed.

Thanks! I'll take care of this in future.

wrong answer Integer 0 violates the range [1, 4]

what is the meaning of this? I was getting this on the contest in problem E1.

this is my code:

my codeYou have to output a number from 1 to n for index... 0 isn't allowed

I'd tried with 0, but same message. And In the problem it is said the index is [0, n-1]

Elements'

valueslie in $$$[0,n-1]$$$.That shows 0 < a[i] < n for each i ... but what you have to output doesn't relate with the value... our array : a[1], a[2], ... a[n](there is no a[0])

The array is $$$1$$$-indexed.

in your query, you have to do

`cout << s << ' ' << i + 1 << ' ' << j + 1 << endl`

because the queries are one indexed.

Got wrecked

How to solve F?

First player loses iff for all diagonals of the form $$$i + j = k$$$ have xor-sum equal to 0 (similar to Nim). Proof: if they are not 0, you can make all of them 0 with a single move (and you can't make them 0 if they already are).

Nevermind, I got the diagonals wrong. I get it now :)

Suppose we define two state State 1- All diagonals have XOR equal to 0 State 2- Atleast one diagonal has non-zero XOR There exists a move from state 2 to state 1 and from state 1 a player is forced to move to state 2. So if there exists any diagonal with non-zero xor, then player 1 wins else player 2 wins. Hope you get the idea

What was the logic for B?

HintYou need to replace each parts of substring with other subsequence in total-string

HintWe just need to replace one part !

Just need to check whether one of these condition are true

HintWe just need to replace one charactor !

Just need to check whether one of these condition are true

Ugly Code - But just for referenceHow to solve C?

HintTry to store things in frequency array (number of times such charactor $$$c$$$ represent in string $$$s$$$)

HintWe can always swap array whenever we want without affecting increasing work

HintWe can only increase the whole $$$k$$$ charactors equal to $$$c$$$ if $$$c$$$ exists atleast $$$k$$$ times

HintWe will compare in order of small to larger. And increase whenever necessary. But if there is no valid smaller elements than the current $$$b[i]$$$ (valid here means it exists atleast $$$k$$$ times), then the answer will be "No"

Ugly code - But just for referenceFor me this was a disaster, if cf-predictor is right that was the biggest negative delta I ever got. No need to tell what I think about the problems ;)

All the problems are quite tricky!

It was a weird round, full of ad-hoc problems. Yeah, they aren't that great imo, but these are the sort of rounds that make you feel either great or terrible.

adhoc adhoc adhoc everywhere even people passed D just with some guess. It took me a tough time to prove why that formula is correct but I think CP doesn't reward proofs over guesses same is the case with most of his previous rounds too in almost all of them first 5 problems will be just adhoc or formula. and after that are beyond the scope. Codeforces can be better transformed to adhocforces. I don't see much code in writing formulas. thus This is not code-forces.

E1 was logically much simpler than D IMHO btw

the difficulty level of questions in my opinion: D<B<A<C

The problems where all more or less like: Find the key observation and solve easyly, or die.

I'm getting downvoted by those who found the key observation haha.

may be you are wrong . i completed a,b,c under 30 mins and couldnt get any idea about D for rest of 2hrs :(.

Am I the only one who thinks D is easier than C?

Please explain your approach for D!!

99186053 look at this code.

Are you going in a staircase manner?

I just simply iterated x, y by k until x * x + y * y > d * d. If the number of steps is odd, then Ashish win and vice versa!

Why does this work?

Yeah same question!! Why is this working?

see this comment comment

If two players play optimally, the number of steps taking by them is always maximum, I can prove it! So we need to find what is the maximum steps, and obviously, Ashish wins if that value is odd.

99136653 here is my submission!

How to solve Z?

Problem F is very similar to problem 1149E. (https://codeforces.com/contest/1149/problem/E)

How to solve B? It was harder than A and C for me lol

How to solve C? B is about to find if there is a s[l] in the left [0,l-1] or if there is a s[r] in the right [r+1,n-1].

HintTry to store things in frequency array (number of times such charactor $$$c$$$ represent in string $$$s$$$)

HintWe can always swap array whenever we want without affecting increasing work

HintWe can only increase the whole $$$k$$$ charactors equal to $$$c$$$ if $$$c$$$ exists atleast $$$k$$$ times

HintWe will compare in order of small to larger. And increase whenever necessary. But if there is no valid smaller elements than the current $$$b[i]$$$ (valid here means it exists atleast $$$k$$$ times), then the answer will be "No"

Ugly code - But just for referenceCheck my simple solution

I got really frustrated by not being able to solve A and somehow solved B while cursing myself about A , LOL . BTW could someone say the logic behind A ?

Let's consider if the value $$$\geq 4$$$. We know that for all even values, we can easily go to $$$2$$$ then go to $$$1$$$, so we have $$$2$$$ steps overall. For odd values, we can't do better than $$$\text{steps even} + 1 = 2 + 1 = 3$$$. Let's say we can jump to $$$3$$$ in one step (we can't jump into $$$2$$$ since the number is odd), is still takes $$$2$$$ steps into $$$1$$$ and it makes at least $$$3$$$.

consider string s=111010101000 , consider l=4,r=9 , of course sub-string[l-r] is a sub-sequence of but as per conditions we cannot take the same sub-string , the only way we can find another sub-string is if we can find s[l] before l OR s[r] after r . because constraints are small you can brute-force .

how to solve C ?

HintHintWe can always swap array whenever we want without affecting increasing work

HintHintUgly code - But just for referenceHintYou need to replace each parts of substring with other subsequence in total-string

HintWe just need to replace one part !

Just need to check whether one of these condition are true

HintWe just need to replace one charactor !

Just need to check whether one of these condition are true

Ugly Code - But just for referenceamazing round difficulty level of each question was up to mark

D is a bulshit. It's all my words about this contest. Sorryyyyyyy

I am not sure about that, but I focused on D and lost focus on E which resulted a huge negative delta :/ Sad thing that I am bad at game theory. I wonder, what is the actual proof for the problem? I don't like in general the problems which are mainly focused on intuition which results in a big gap in the scoreboard(for example, masters and specialists together in the same page).

These problems might not favour you, but it can be argued that they give higher chances to lower rated people.

I can agree with you. After reading D I immediately go to E1. This intuition problems really rage me.

Actually, it's not just the intuition part.There are 2 ways to arrive at a solution.

1) Use analysis, unravel each step and go from problem to solution

2) Guess a solution using observation and try to prove it.

The former is actually interesting,but the later is quite annoying at times,since it's not easy to see that observation,sometimes there is this blindspot where we miss it.But we have to accept that it is a part of the game.

You are absolutely right. But I have looked for reason why I was bad in this CF. I have already released my emotions.

I used 3) Guess the solution, notice it works right for the second player if he wins but you're not sure about the first player, submit anyway and get AC

Yea,at times even for experienced coders, it just doesn't strike.Btw can you elaborate on your soln for D ?

Assume the optimal strategy is right, up, right, up, ... done.

lol, how did you arrive at it ? I mean there are so many such constructions, why did you pick this ?

The second player can win with this strategy in case he wins (using this strategy). Then I just assumed there's nothing the second player can do to fight against the first player when he can't win with this strategy...

that's a great way of arriving at it

see the main proof is that the path traversed until we move out of the quadrant of the circle is always maximum path will be followed as both the players play optimally. if this maximum path is of even length UTkarsh is winner else Ashish.

That is not a proof...

The only thing I observed and took for granted is that all points on a diagonal (y-x = a) are either all winning or all losing. Then I just checked whether the point (x,x) which was just inside the circle was winning or losing. I don't believe this amount of pattern recognition makes a question bad.

Lol it seems like many high experts and candidate masters lost rating today according to this comment section

That is actually very true indeed. It might be some psychological feeling that as a specialist or low expert, solving A,B,C fast is already good and submitting anything even if you got penalties on D is good as you have done already good. So that makes the person confident. Now, as a CM/high expert, that is not the case. We know solving only A,B,C will guarantee a huge rating loss so we know that 1 penalty would differ a lot. I myself tried to proof an optimal strategy for a lot of time but couldn't so I wrote any solution and got WA.

try to find the bug and feel that pain

Maybe time to quit CP :)

counter test for you

There is a shitty bug in the code. I couldn't find it during the contest. The solution is actually correct for both E1 & E2 except that blinder

WA on pretest 2 legacy continues ..

E2: First, let's learn $$$a_1 \oplus a_j$$$ for all $$$j$$$. We know $$$a_1 \oplus a_1 = 0$$$ and we can use $$$N - 1$$$ queries to learn the remaining values. We'll use the remaining two queries to learn $$$a_1$$$.If $$$a_1 \oplus a_x = a_1 \oplus a_y$$$ for any $$$x \neq y$$$, we know $$$a_x = a_y$$$. We query for $$$a_x = a_y = a_x \land a_y$$$ and compute $$$a_1 = (a_1 \oplus a_x) \oplus (a_x \land a_y)$$$.

Otherwise, all $$$a_1 \oplus a_j$$$ are distinct. It means the hidden array is a permutation of $$$[0, N)$$$. There exists some $$$a_1 \oplus a_j = 1$$$; we query $$$a_1 \land a_j$$$ to learn all the bits of $$$a_1$$$ except its last. Finally, we take any $$$k \neq j$$$ such that $$$a_1 \oplus a_k$$$ is odd and query for $$$a_j \land a_k$$$ to determine the final bit of $$$a_1$$$.

To finish we compute $$$a$$$ using $$$a_j = a_1 \oplus (a_1 \oplus a_j)$$$.

This was my second contest.

Nice problems are given. Loved to participate in it.

Just wondering, is there any reason the answer for problem B is "YES"/"NO" but the answer for problem C is "Yes"/"No"? It seems B and C was originally belong to different contest :)

Different people prepared those 2 problems iirc, that's most likely why.

Hi, everyone. It confused me for a long time. I wonder why this 99184980 got ILE on test 3.

Seems like cout is not flushed so not inputs are provided.

I think cout is flushed by endl. T_T

Maybe it's because you queried twice without reading the result of the first query?

Can someone tell me why my E is wrong.

First I queried "XOR 1 2" then "XOR 2 3" then "XOR 1 3". This should be enough information to find element 2 and from 2 we can find 1 and 3. now we keep doing "XOR i i+1" from i=3 to i=n-1 to get all numbers.

I feel like I'm completely disregarding something because this algorithm takes only n queries bu then again I tried it in quite a few testcases and it seems to be right. Can someone pls help?

EDIT: I'm sorry guys, I misread the question to think "XOR i j" means xor of ALL elements between i and j.

Please ignore the thread :(

I don't think

`XOR 1 2`

`XOR 2 3`

`XOR 1 3`

is enough information for find out what is a2I was kinda skeptical too about it, but on trying in random numbers it works.

code for getting second elementAgain I might be completely overlooking something, so please bare with me lol

You can't get element 2 from that information. One example is when the first three elements are the same. All the xors give 0

If first 3 elements are same, the third xor will not be 0

First, because ($$$a_1$$$ xor $$$a_2$$$) xor ($$$x_2$$$ xor $$$x_3$$$) equals to ($$$a_1$$$ xor $$$a_3$$$), the third query is waste. So through these queries we can find only the relation between $$$a_1, a_2, a_3$$$, not the value itself.

codePlease find 3 numbers where it doesnt find the correct sequence for n=3

Have you tried the case of this?

It works

I wonder... I tried your code in my system, for the case of

the interaction will be like this, isn't it?

omg I just realized "XOR i j" is the xor of ai and aj and not xor between all elements between i and j.

I'm really sorry lol

$$$[0,0,0,0]$$$ , $$$[1,1,1,1]$$$, $$$[2,2,2,2]$$$ , $$$\ldots$$$ are indistinguishable.