Hello again Codeforces!

errorgorn, oolimry and iLoveIOI are glad to invite you to participate in Codeforces Round #723 (Div. 2) which will be held at May/28/2021 17:05 (Moscow time). The round will be **rated for the participants with a rating lower than 2100**. Participants from the first division are also welcomed to take part in the competition but it will be unrated for them.

You will be given **2 hours and 30 minutes** to solve **6 questions**. One of the puzzles is interactive, please read the guide of interactive problems before the contest.

We would like to thank:

- Our lord and saviour antontrygubO_o for amazing coordination and rejecting our poopoo tasks
- dantoh and tqbfjotld for roasting our enigmas and testing them before they were prepared
- our many testers balbit, kshitij_sodani, 1-gon, T1duS, icypiggy,user14767553, maomao90, LostCoder16, m371, Jellyman102, ETK. and jamessngg for bricking on bamboozlers and destroying our testcases
- MikeMirzayanov for Codeforces and Polygon platforms

We hope you find the bugaboos interesting and fun! Wish you high rating!

Here is scoring distribution because you guys deserve it <3

**500 — 1000 — (750+1000) — 2250 — 2500 — 3500**

Btw, remember to downvote all testers who writes stupid comments to beg for likes.

**UPD:** editorial released

`stupid comments to beg for likes`

Everyone after seeing disliked comment..Lets Dislike it more

Spoiler...

n

As a participant of the testing contest, sir antontrygubO_o has barred us to post "as a tester" comments. So following his order, Enjoy another consecutive contest under lord Anton ! The authors did a great job with the problems ! Wish you high rating. !

True, as a participant of the testing contest, I will not be writing 'as a tester' comments since Anton sir told us not to.

'Btw, remember to downvote all testers who writes stupid comments to beg for likes.'

The testers right now:

How can we forget this torture to us :/

Smart comment

Jokes apart, the problems are really nice and errorgorn sir doesn't like long problem statements so it's going to be a nice contest.

I guess the statements are so short that the author decided to call them questions.

Is it ok for non-testers to ask for upvotes?

Yes ofcourse. You have mine :)

I've never seen a man work so hard for contribution++

civil war

Unfortunately, T1duS is done with his quota of comments on this blog, and now is crying in front of us all others on testers grp that he can't reply to you.

This is how a champion works bro:

Tune in on 6th June to learn more!

https://www.youtube.com/watch?v=FTcgA2eQ1XE

ngl, when I read "give me some ideas", I thoughts its a shot from a telegram cheating grp lol. But apart from jokes, yeah, he is :orz:

The last round had very nice problems!! Expecting even more nicer problems this time!!

Glad to hear that you liked the tasks,

If you are mad at anyone, you should be mad at me or the other setters. As a coordinator Anton did the best he could/was humanly possible.

I'm not mad at anyone, you all did your best and we enjoyed trying the problems!

Problems were nice.. any failure is a part of the contestant's fault.

Agree 100%

Thanks to the last round, I can be rated this round :D

.

nahi_aati_coding ORZ

Div 1.5 on it's way :(

Will the contest be difficult? Scoring looks fine tho

Is it a trap again? :)

nastia and scam? :)

Lets hope this round will be as good as yours, and not a trap.

But I can already see its_Atrap

Now, we can be perfectly sure that it indeed was a trap. Feel free to blame its_Atrap

Which problem is an Interactive Problem? It should not be anyone one of A, B and C. :(

I guess may be C will be interactive. As it is also divided in two significantly easy questions.

Why does that indicate interactivity?

Maybe some number of queries based.

Easy one — at most N queries.

Hard one — at most N/3 queries.

SpoilerPrerequisite : Binary Search.

Time Complexity : N_LogN

If not interactive then it must be a brainteasers or why would c will be divided into similar difficulty of A and B?

Looks like you haven't participated in many contests having subproblems. It always has been this way.

Because C has been split for non-interactive problems before? What's so special about interactivity?

Also in all likelihood, solving C2 (i.e. both parts of C) will be harder than B. It is just that it has an easy subtask.

Don't forgot to consider the

UNUSUAL START TIMEis't it unusual start time ??

It is unusual , I don't know the reason of you getting so many downvotes , Maybe I will also get some now :/

I was surely going to miss this round. Thanks :)

SpoilerIt doesn't necessarily have to be a binary search problem, it can either be a segment tree problem or even not a certain tag.

https://codeforces.com/blog/entry/91090?#comment-796399

..2 hours and 30 minutes to solve 6 "questions"

Radewoosh triggered

Exactly xD

Hope for strong pretests of bugaboos

not like this...

Good luck everyone :)

It will be my first div2 round. Just do it!

How do you fix contest duration?

We have testers to virtual the problemset and they give feedback on whether the contest should be longer or shorter. And we kinda agreed that 2 hours 30 minutes was good.

Ignore.

Please read annoucement more clearly next time

Can anyone tell me, how does this "750+1000" scoring works?

I hope the contest overload Codeforces server with great participation just like now when I am reading this announcement :)

It means there will be C1 and C2

bugaboos, with C1 being easier, therefore scored 750.Race to specialist begin ...

I came looking for bugaboos, I WAS NOT DISAPPOINTED

nice contest

Can a tester say the round was bad for once please :D

We do all the time, but only to the authors/coordinators. This is because we like to watch contestants suffer, so we have every motivation to avoid telling if the round is bad. And we might even lie and tell that it is good when it's not.

(Anyway, this round is good.)

So, should i trust that the round is good as you said "anyway, this round is good" or not as you said "And we might even lie and tell that it is good when it"s not".

My mind gave many errors on reading your comment XD

spy tf2

If we eliminate the impossible, whatever remains, however improbable, must be the truth!!!

I will, when I test a round (sad face) :(

Hope those Bugaboobs dont destroy my rating.

Why are we not using bugaboos instead of questions?

bugabooset Done

~~Just couldn't resist more.~~## Codeforces Round #753 Memeset

The following memeset is divided into 5 memes, one of which has two parts, so basically 6 memes. You will have 30 seconds to waste on it.

I sincerely hope you all enjoy it.

Odd Bugaboo

ABugaboo Ragnarok

BArei Syndrome

CBugaboo Apocalypse

DA no namer cyan posting memes, meanwhile THE red coder-

E1Close up Rade-vieew-shh:

E2Thanks and don't wait for editorial.

I am damn Sure that

Binary Searchwill be Used in One of the Problem in this Contest.How?`Upvote`

if you Found it Helpful !I think it's a trap. They are misleading the harmless contestants to just walk into the world of Binary Search.

Not just any one of the problems. I bet it will be the interactive problem. And most importantly, it's not even surprising.

CF never disappoints us. Bugabooset

now that cf changed problemset to bugabooset, i can happily tell, i cant wait to solve more bugaboos in this round with you all!

I hope there will be short tasks.

Hope I reach Pupil today. Wishing high rating to everyone:)

pretests || system testsBugabooforces

C score distribution is 1750?why it is in brackets?

There will be 2 sub

bugaboosC1 and C2 with C1 be easier as compared to C2.2 different tasks with c1 different and c2 different like B1 and B2 in 721#Div2 ?

Wish I would be able to solve at least 2 bugaboos in this contest

iLoveIOI What happened to you after 2018?

cyberphobia, I guess !!

:eyes:

One problem is interactive means that 1 out of 6 will be interactive or c1&C2 will be interactive???

Hope the question statements will be short and clear

You mean bugaboo statements?

.

hahaha.. people trying hard to create memes to get some upvotes.

2 hours and 30 minutes for 6 problems? This one is going to be tough

hope this contest will be the one to break my negative rating streak :D

Your current streak is just

1..

Friendly advice to cin cout users. Use

I suffered a lot because of this in the last contest.

I forget to register can anyone say how I can register now?

Problems were very Interesting!! Thanks to the setters.

How are these problems interesting? Just speedforces from A — C2.

I literally hate 1111.

Such a shitty problem!!

i simply did recursive backtrack.

Now, we all hate 1111

After watching solution you will hate yourself (for some time) xD

My Health gone negative today.

Weird flex but okay.

Gave my best, but this contest was too hard. Solved 0 out of submissions for a, b and c. Have to improve my intuition.

E is just this paper. Did authors know about this? It was a bit too easy to find.

I think we really did not know about this. So sorry about that.

I am very sorry, I will try to research more next time.

Had a very bad contest. Was C some sort of greedy?

I was also thinking about only dp for C

Yes, parse the array, put -1*values in a heap,whenever sum goes below 0 start adding the values from heap, simultaneously maintaining the maxcount.

Yes. C1 could be done by DP though.

yes , tbh i found it easier than B. In C you just need to remove most negative element when overall sum becomes less than 0 . Let's hope it passes pretest .

Yeah. You maintain a value

`h`

(health),`ans`

(longest sequence), and`Q`

(a priority queue of used potions), and at each element, if`h + a[i] >= 0`

you increment`h += a[i]`

,`ans++`

, and add`a[i]`

to Q. If`h + a[i] < 0`

, then check whether we can improve`h`

at that index by swapping the smallest used value in`Q`

for the current value of`a[i]`

.Got it. This was too easy, well, I was thinking in some other direction entirely. Thanks to everybody for the help.

Yeah it is kinda greedy. For every i from 1 to n let's say ps = (sum of positive integers till i) and ns = -(sum of negative integers till i) and also you maintain all negative elements in a priority queue. So you will remove the least elements until ns<=ps for every i and update answer by counting i-(number of removals).

Yes, I did it greedy way.

Approach— traverse the array and keep on taking all potions as long as your health is non negative. Also keep adding negative elements into the`heap`

as you will need it.If you encounter a negative potion which on adding will make your health negative then see if it is greater than the min element of heap in your heap of -ve numbers, if yes then remove the min number from heap and add the current potion

(this step will increase your health keeping the number of potions same).You can solve it also using a segment tree.

I love how you always cover your code with comments regarding your thought process

Can we solve this without segment tree ? We can keep on removing it ( negative taken a[i]) from previous positive values (of a[i] ) , and if we can remove it , we add it to ans . Here we take the negative number with min abs(a[i]) first ,similar to your idea. spookywooky . Please help i tried this way, getting wrong maybe impletation error.

One way how to do it without segtree is above, see link

Out of curiosity, is it possible to compute the optimal swapping cost in problem D for two arbitrary strings in less than O(n ^ 2)?

After realizing the answer was always made up of contiguous blocks, I bricked on this subproblem for an hour before realizing I could calculate it in O(n * characters) as long as one string had that property.

1430E - String Reversal

The level of ooof given I got AC on this problem during the contest...

It's the inversion count

Let x be the first character of A. We can always say that the first occurrence of x in B will be the character that will go to the first slot in B(otherwise we can see that for any other occurrence of x should swap with the first occurrence of x and by doing that we are swapping two same characters which is not optimal). So now whe have the following algorithm: Take first character in A — x. Find the first occurrence of x in B. Move x to the first slot. Remove both xs from A and B and repeat until there are no characters left. You can store the list of position of each character in B and using Fenwick tree you can efficiently calculate the position of x.

Yeah this is exactly what I was trying for an hour, including using the Fenwick Tree as a difference array to see how much I had to "adjust" the original position of the x to get its actual position. Couldn't figure out the exact details of what to add / subtract to adjust it in the case where a character gets shifted right multiple times.

Some one please tell me about approach of B

If x > 11 * 111 — 11 — 111 (frobenius coin problem), answer is YES. Otherwise, answer is yes if x is obtainable by combination of 11 and 111.

I thought of it this way. If you add

`111`

to any multiple of`11`

, you are basically adding`1 mod 11`

. So if your given number is`>= x*111`

, you can shift the mod by`x`

times. It's easy to see that if`x>=10`

, any number is possible.You have to notice that 11 and 111 can actually make the remaining 1s(say 11111 = 11*1000 + 111). Then notice that 111 = 11*10 +1. It means that we could first always use 11. If the remainder is say 3, we change thirty 11 into three 111. Then it is divisible. So if we have thirty 11, then it is divisible, otherwise no. Therefore, we have this equation:

remainder <= (quo/10)

I got rekt ;(

how the gell to do B ?

What's your approach to

Kill Anton?Making his DNA beautiful.

every random logic passed first pretest on problem D but failed on second. What was story behind putting "ok You are epic!" in pretest 1 of D ?

The first pretest is just the sample test from the statement. And the OK message is probably the same for all test cases (in this contest at least), but obviously the system won't show more testcases before the end of the contest.

I love Anton Sir very much. (:

Spoilerproblem statement for D was quite entertaining and funny loved it ♥

How to solve it ? I summed the position at which each character is occurring and then put those characters whose sum is lowest in last.

I applied brute force , grouped all same characters together and solved for each permutation of ANTO and it worked

Thanks. Can any one provide intuition or proof why it will be correct (grouping similar characters together) ?

The title of problem B is giving a clue for solving the question

SpoilerThe title of the problem is "I hate 1111" . This is important because you will see that all numbers greater than and including 1111 in the series 11, 111 ,1111 , 11111 ,... can be expressed as the sum of 11 and 111. Example

1111=11*100+11

11111=111*100+11

Thus the problem subsequently breaks down to finding out if a solution to the following linear equation exists a*111 + b*11 =n (Here n is the number we have to represent.

What the hell was problem B! Spent almost the entire contest thinking on it!!!!

Is just looking mod11, it can be done in O(1) per query with 11 if

If n >= 11*111, you are guaranteed yes, because you can subtract values of 111 until you get a multiple of 11.

Then we know we are only concerned with 1111, 111 and 11. We can brute force every combination of these that doesn't take us over 11*111, and update an answer array with YES for each found value (default is NO). Precompute this to avoid TLE.

How can we be very sure that we will always end up getting multiple of 11 by substracting 111 repeatedly for n>=11*111

111 is congruent to 1 mod 11, so 111*n is congruent to n mod11, so you can get a number with any rest mod11

11 and 111 are coprime. Suppose n % 11 = k, 0 <= k < 11. 111 % 11 = 1. If we subtract 111*k, we have reached a multiple of 11. Since k < 11, n is still positive.

https://en.wikipedia.org/wiki/B%C3%A9zout%27s_identity

The mathematical answer is that 111 is 1 modulo 11, but if you're not familiar with modular arithmetic, I can explain it differently.

Every number $$$x$$$ can be expressed as $$$a×11 + b$$$, where b is between 1 and 10, inclusive. For example, $$$111 = 10×11 + 1$$$, or $$$12345 = 1122×11 + 3$$$. (Another way to write this is that a = x / 11, and b = x % 11, where / is integer division, and % is the remainder after division.)

That means:

1×111 = 111 = 10×11 + 1.

2×111 = 222 = 20×11 + 2.

3×111 = 333 = 30×11 + 3.

4×111 = 444 = 40×11 + 4.

5×111 = 555 = 50×11 + 5.

6×111 = 666 = 60×11 + 6.

7×111 = 777 = 70×11 + 7.

8×111 = 888 = 80×11 + 8.

9×111 = 999 = 90×11 + 9.

10×111 = 1110 = 100×11 + 10.

Since every remainder between 1 and 11 occurs exactly once, we can turn any number greater than 11×111 into a multiple of 11 by subtracting the appropriate multiple of 111 to reduce the remainder to 0.

For example, $$$1234 = 112*11 + 2$$$, so we can subtract $$$2×111 = 222$$$, to end up with a multiple of 11: $$$1234 - 222 = 1012 = 92 × 11$$$.

You can make it a bit more optimal. $$$x=11$$$ and $$$y=111$$$ are coprime, so every number can be expressed as a linear combination of them. I guess you can check what this linear combination is and check if both are positive, or you can brute force up to $$$11*111-11-111=1099$$$ which would be the maximum number not expressible with positive coefficients.

Indeed. Really the question amounts to

ans = (n >= (111)*(n%11) ? "YES" : "NO")

You can avoid precomputing just by noticing that the conditional if(x%11==i&&x>=111*i) must be true for some i between 0 and 10 if the answer is YES

Yep. A few ways to do this. Quite a nice question.

Every number with even number of ones is a multiple of 11, and every number with odd numbers of ones is 111 + a multiple of 11. So the answer is 11x + 111y. Floor(n / 11) should be >= (n mod 11) * 10 to have an answer, i.e., trying to take every 1 in the mod with 10 elevens to form 111.

While testing, current problem B used to be A. We were made to solve it as A :notlikeduck:

A is hardest problem from A-C

I didn't do so hot...

Can anyone hack my recursive solution for B.

I got RE#5 of problem D, can anyone help me? Thanks!

Code...

:(

Very good round.! Thanks for this round. I tried for 2 hours to solve (B) but, I couldn't. If it's possible to give the hint option with the editorial then it will be helpful for beginners like me.

After 10 attempts I was able to passed the test of B in the very last minute of the contest. how did i miss that stupid observation :/

as a first AC, you are late AC.

From problem C I saw the real power of Priority Queue! Good contest :)

Actually there are few cases at each index(from left to right). If current value is negative and reduces the total current sum to < 0, then just check minimum element from priority queue(of negative numbers which have seen and added to the sum until this step during the iterations) if this value is less than it, just ignore this step and go to the next, otherwise just pop priority queue and push this value into it, also change current sum. Note that 1) We need all the positive numbers, it's not the problem of course. 2) If current value is bad to choose this time, it's also bad idea to pop pq twice or more, it's much better to skip this value only(or swap with minimum negative to improve current sum). If current value isn't bad, then just increase total amount and change current sum too(also if this value is negative, push it into our pq of negative numbers).

// Below see code

## include <bits/stdc++.h>

using namespace std;

## define ll long long

int main() { ios::sync_with_stdio(false);

}

but i have done this question without using priority queue

How many of you are getting bad rank because you came 30 minutes late because of your carelessness. It happened to me as well. :(

It was a very strange round for me.

A) No idea, let's random shuffle

B) Spent some time, maybe 5-10 mins wandering whether my solution will pass and why it passed and whether I should optimize it just because thought that 500 * 10000 amounts to billions

C1&C2) Made some stupid mistakes and got -150 for incorrect submissions

D) Immediately got what the answer should look like. Spent an hour googling how to find inversions and copy pasting some functions from stackoverflow until it worked.

After which surprisingly found that I am quite at the top and left the contest because knew that I wouldn't be able to solve E even for an entire hour

Thank you for the round. I really liked these problems, but due to my low level i couldn`t solve all of them. Waiting for more rounds from you :)

.

The place under the picture should be mine

Cause I still don't know how to solve A constructively, just random shuffled it

I did the same after noticing that the upper limit for

`n`

was laughably small. Also having no idea how to solve problem A constructively made me finally switch from Ruby to D programming language. Because a 20x-100x speedup surely increases chances for a non-optimal solution to be accepted.It's interesting that there were two persons using D and only one person using Ruby among more than 10k contestants today.

"How to solve A?"

Today's contest was shit for me

How come? You haven't even participated

Are you sure about this ?

If you haven't tried to submit any solution, then the system assumes that you haven't participated at all. Just being online and reading problem descriptions isn't enough.

In short, forget. Who will understand he will understand I handed over shorter

MikeMirzayanov When will you update the rating ?

ok Nice! (Bugaboo A)

It was a nice contest with understandable problem statement. I loved doing this contest thanks for the contest

Thanks for the fun bugaboos! Here's a link to my screencast. (An HD version will be ready within the next few hours.)

https://codeforces.com/contest/1526/submission/117690554

Can somebody help me out I am getting RTE on test 17 in C2

CAN ANY BODY HELP ME CONVERT THIS CODE IN TO MEMO OR DP PROBLEM C GETTING TLE public static void main(String[] args) { // TODO Auto-generated method stub FastReader s=new FastReader(); int n=s.nextInt(); long[] arr=new long[n]; for(int i=0;i<n;i++)arr[i]=s.nextInt(); long ans=solver(arr,0,0); System.out.println(ans); } private static long solver(long[] arr, int i,long sum) { // TODO Auto-generated method stub long ans1=0; long ans2=0; if(i>=arr.length)return 0; if(sum+arr[i]>=0)ans1=Math.max(1+solver(arr,i+1,sum+arr[i]),solver(arr,i+1,sum)); else ans2=solver(arr,i+1,sum); return Math.max(ans1, ans2);

Codeforces these days is coming with tricky and tough questions to think upon in contests..isnt it ?

117662221 PLEASE HELP TO CONVERT THIS CODE IN DP OR MEMO THANKS U I ALREADY WRITE THE RECURSIVE SOLUTION

I don't think that this problem can be solved with dp since the constraint on health is way to high .I tried doing the same during the contest and got TLE only . But now I have solved it you can checkout my approach here

Can someone share more problems based upon

Chicken Mcnugget Theorem.Thanks in advance .

I solved problem C1 in the last minute, but got so excited that forgot to submit C2 :(

Is the next Codeforces Round for DIV2 going to be in 2 weeks?? If yes then why such a long wait?

A DIV1+DIV2 contest is in two days and you are eligible to participate in it. Also more DIV2 contests are likely to show up in the schedule. Many of them are announced with just a few days notice.

Ohh thanks for the information. I recently started participating in the contest so didn't know about it.

This is my dp function.

I am simply caling it using longarr(a,n,dp,0,0,0). It is showing WA on Test Case 3 and I am not able to understand why. Can Someone please help?

I liked the test but the question was really hard:((((

errorgorn and the testers are

madladsfor having this as a test case for 1526A - Mean Inequality.ORZ, ORZ, ORZProblem C is a known problem. 11 days old blog link . Similar problem link.

After the contest i was assigned to a room.What does that mean actually?

You can only hack those people who are in the same room with you (after locking the problems).

In Codeforces Round #723 (Div. 2) K_I_E_N_1_8_2_0_0_5 is my sub account, i have submitted the solution from main account to sub account, can you add me points to kien_1_8_2005 and subtract only from K_I_E_N_1_8_2_0_0_5

Hey guys, My idea for C2 is to greedily take elements in descending order until total_sum becomes negative, also while taking an element, check if the prefix till here plus current element is positive. code. Couldn't figure out where it's failing. could anyone help

What is wrong in this solution for question c2 ?

## include <bits/stdc++.h>

## define ll long long

## define ld long double

## define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);

using namespace std;

const ll MOD = 1e9 + 7; const ll N = 2e5 + 5;

ll n, a[N], sum = 0, ans = 0;

int main() { IOS;

}

Use any data structure other than set because set does not allow storing duplicate values.

Thanks :)

can anyone please help me why i am getting error in the C question

## include<bits/stdc++.h>

## include

## include

using namespace std; int main() { int n; cin>>n; int arr[n]; priority_queue <int, vector, greater > pq; int s=0; int c=0; for(int i=0;i<n;i++) { cin>>arr[i]; pq.push(arr[i]); s+=arr[i]; while(s<0) { s=s-(pq.top()); pq.pop(); c++; } } cout<<(n-c)<<endl;

}

someone add me as friend and make my Friends of users count 59 to 60.I hate the digit '9' at the end of any number

tourister is great programmer