We hoped you find our problems interesting. We apologize for the late editorial. Hopefully you were still able to enjoy our contest.

Anyway, here are the tutorials for each of the problems:

### 1397A - Juggling Letters

If the total number of occurrences of some character $$$c$$$ is not a multiple of $$$n$$$, then it is impossible to make all $$$n$$$ strings equal — because then it is impossible for all $$$n$$$ strings to have the same number of $$$c$$$.

On the other hand, if the total number of occurrences of every character $$$c$$$ is a multiple of $$$n$$$, then it is always possible to make all $$$n$$$ strings equal. To achieve this, for every character $$$c$$$ we move exactly ((the total number of occurrences of $$$c$$$) $$$/$$$ $$$n$$$) characters $$$c$$$ to the end of each string, and by the end we will have all $$$n$$$ strings equal each other.

We can easily check if the condition satisfies by counting the total number of occurrences of each character $$$c$$$ and check its divisibility by $$$n$$$. The final complexity is $$$O(S \cdot 26)$$$ or $$$O(S)$$$ where $$$S$$$ is the sum of lengths of all strings.

**C++ solution**

**Python solution**

### 1397B - Power Sequence

First of all, the optimal way to reorder is to sort $$$a$$$ in non-decreasing order.

**Proof**

From now on, we assume $$$a$$$ is sorted in non-decreasing order.

Denote $$$a_{max} = a_{n - 1}$$$ as the maximum value in $$$a$$$, $$$f(x) = \sum{\lvert a_i - x^i \rvert}$$$ as the minimum cost to transform $$$a$$$ into $$${x^0, x^1, \cdots, x^{n-1}}$$$, and $$$c$$$ as the value where $$$f(c)$$$ is minimum.

Note that $$$c^{n - 1} - a_{max} \le f(c) \le f(1)$$$, which implies $$$c^{n - 1} \le f(1) + a_{max}$$$.

We enumerate $$$x$$$ from $$$1, 2, 3, \dots$$$ until $$$x^{n - 1}$$$ exceeds $$$f(1) + a_{max}$$$, calculate $$$f(x)$$$ in $$$O(n)$$$, and the final answer is the minimum among all calculated values. The final complexity is $$$O(n \cdot max(x))$$$.

But why doesn't this get TLE? Because $$$f(1) = \sum{(a_i - 1)} < a_{max} \cdot n \le 10^9 \cdot n$$$, thus $$$x^{n - 1} \le f(1) + a_{max} \le 10^9 \cdot (n + 1)$$$. When $$$n = 3, 4, 5, 6$$$, $$$max(x)$$$ does not exceed $$$63245, 1709, 278, 93$$$ respectively; so we can see that $$$O(n \cdot max(x))$$$ comfortably fits in the time limit.

**C++ solution**

**Python solution**

### 1396A - Multiples of Length

In this problem, the answer is rather simple. Here is one possible solution to this task.

**Solution for n = 1**

**Solution for n != 1**

**C++ solution**

**Python solution**

### 1396B - Stoned Game

Let us denote $$$S$$$ as the current total number of stones.

Consider the following cases:

**Case A: There is a pile that has more than $$$\lfloor \frac{S}{2} \rfloor$$$ stones.**

The first player (T) can always choose from this pile, thus he (T) is the winner.

**Case B: Every pile has at most $$$\lfloor \frac{S}{2} \rfloor$$$ stones, and $$$S$$$ is even.**

It can be proven that the second player (HL) always wins.

**Proof 1**

**Proof 2**

**Case C: Every pile has at most $$$\lfloor \frac{S}{2} \rfloor$$$ stones, and $$$S$$$ is odd.**

The first player (T) can choose from any pile, and we arrive back at *case B* where the next player to move loses.

So the first player (T) wins if and only if there is a pile that has more than $$$\lfloor \frac{S}{2} \rfloor$$$ stones or $$$S$$$ is odd. This can be easily checked in $$$O(n)$$$.

**C++ solution**

**Python solution**

### 1396C - Monster Invaders

In this problem, it is useful to note that when the boss only has $$$1$$$ hp left, just use the pistol because it has the least reloading time. So there are 3 strategies we will use when playing at stage $$$i$$$ $$$(1 \le i \le n)$$$:

- Take $$$a_i$$$ pistol shots to kill first $$$a_i$$$ monsters and shoot the boss with the AWP.
- Take $$$a_i + 1$$$ pistol shots and move back to this stage later to take another pistol shot to finish the boss.
- Use the laser gun and move back to this stage later to kill the boss with a pistol shot.

**Observation:** We will always finish the game at stage $$$n$$$ or $$$n - 1$$$. Considering we are at stage $$$i$$$ $$$(i \le n - 1)$$$ and the boss at both stage $$$i$$$ stage $$$i - 1$$$ has $$$1$$$ hp left, we can spend $$$2 * d$$$ time to finish both these stages instead of going back later, which costs us exactly the same.

Therefore, we will calculate $$$dp(i,0/1)$$$ as the minimum time to finish first $$$i - 1$$$ stages and 0/1 is the remaining hp of the boss at stage $$$i$$$. The transitions are easy to figure out by using 3 strategies as above. The only thing we should note is that we can actually finish the game at stage $$$n - 1$$$ by instantly kill the boss at stage $$$n$$$ with the AWP so we don't have to go back to this level later.

Answer to the problem is $$$dp(n, 0)$$$. Time complexity: $$$O(n)$$$.

**C++ solution**

**C++ solution**

**C++ solution**

Auto comment: topic has been updated by DatVu (previous revision, new revision, compare).Awesome contest and nice problems! The pretests on Div 2 B were a bit weak.

Good or bad thing? I think it's interesting because some people prefer weak pretests for hacking potential, while others prefer strong pretests to have the peace of mind that their submissions are right or wrong.

Sorry for that. I tried to create strong pretests, but couldn't do much with only 5 pretests allowed.

atoiz Can you

`The cost to transform ai to ci is |ai−ci|, and |ai−ci|+|aj−cj|≤|aj−ci|+|ai−cj| when i<j and ai≤aj, thus it is optimal to have ai≤aj for each 0≤i<j<n.`

elaborate this more?I've updated the editorial for B. Hope it clears things up for you.

Thanks !!

Can we use

`ternary search`

in Div2 B ? We would be searching the value of`c`

? atoiz, DatVu ?About time

What happens if in Stoned Game we are allowed to remove non-empty pile of any size?

Whatever i said was incorrect. The rule that a person cannot choose from the same pile as the previous turn invalidates whatever i said

It will be equivalent to nim because in nim game, strategy to win always doesn't contain any move that remove stones from the piles in the immediate previous turn.

Thank you for lightning fast editorial

Stoned game problem is very much similar to CF round 577 div 2 B. If you submit that problem solution just changing YES->HL and NO->T, you will get AC on this problem which is D type of Div2.

In that problem the solution might be same but there we are the ones who select both i and j right but in this case both persons try to counter each other. So if you are able to observe that it does not matter much here. Then yeah both are same problems

Yeah right, Both are exactly same problems for those who can observe the intuition behind the problem.

One more thing that I found different, was that the player can't choose piles from the immediate previous turn. Why this fact doesn't affect the solutions to the problems?

One turn of selecting i and j in that problem is equivalent to two moves in the game where one person selecting pile i and the other pile j.

I hope this is what you were trying to ask

Thanks, it cleared my doubt.

Great observation ! It shows that how you think of a problem drastically changes the way you try to solve it..

ThinkAgain You did a great job by providing the link to that problem. Keep doing this good job. Thanks !!

Why is the code for Div 1. C so complicated? There are 2 dp recurrences, one from dp[i] to dp[i+1], and one from dp[i] to dp[i+2].

$$$upd(dp[i+1],dp[i]+d+r1*arr[i]+r3);$$$

$$$upd(dp[i+2],dp[i]+4*d+min(r1*(arr[i]+1),r2)+r1+min({r1*(arr[i+1]+2),r1*(arr[i+1])+r3,r2+r1}));$$$

They store the remaining HP of the boss of the previous stage. The recursion is still overcomplicated, as this suffices:

codeI cannot understand why we need the case with odd-length sequence. Since when we have the odd length sequence we should convert it to an even length sequence based on the fact that the cost of one attack >= 2 attack and if we have an odd sequence then we are going to spend 2*d anyway so why not just make it an even length sequence?

Good observation, though you still need to handle the case where you attack once at $$$n$$$ and turn around. 91777714

Thanks for the help! Actually I was missing the case

when outputting the final answer which I think is required if we have an odd number of levels and we end up taking attack 2 on all of them. This was giving me wrong answer.

Div1C:'We will always finish the game at stage n or n−1.'Why is that so? Why is something like, let's say (for n = 5)

1 -> 2 -> 3 -> 4 -> 5 -> 4 -> 3 -> 2, not possible?

It is possible, but isn't optimal.

It can be optimal. What we know is that there always exists an optimal solution that finishes at $$$n$$$ or $$$n-1$$$.

It's just that there is an equivalent solution that finishes at n or n-1

In your case it would be

1-->2-->3-->2-->3-->4-->5-->4

And this comes from the obersvation that if you have unfinished business at position X (so you have to come back at X), then you don't face the same issue for X+1 (because from X+1 you go back to X then to X+1)...

The editorial doesn't include intuition for Div2C/Div1A.

Here is my intuition: First I started thinking about how many operations an element needs.

(1) With one operation it is possible if the len divides the element.

(2) With two coprime operations it is always possible.

Ok, so (2) seems like the most viable method. Now how do we do two coprime operations on each element? We can do two operations of length n, but we need them to be coprime. Okay, so how about one operation with length n and one with length n-1. Now we can use the third operation with length 1 on the remaining element.

i got what you meant

i solved B using ternary search

I found the difficulty order as following: Div2D <= Div2C < Div2B

And being an idiot,I thought order will be D>C>B

Good tutorial,but the div2E's solution is really vague,"why We will always finish the game at stage n or n−1"? The explaination can never be understood,let's think we have n = 5,1->2->3->4->5->4->3->2->1 must be some data set's optimal solution.I am silly,and you guys can downvote me for my rudeness, but I really hope the offical can explain this clearly!!!

Your strategy can also be optimal, but actually you can finish the game at stage n or n — 1 with exactly same moving cost. In your example, instead of following the path 1 -> 2 -> 3 -> 4 -> 5 -> 4 -> 3 -> 2 -> 1, you can move like this: 1 -> 2 -> 1 -> 2 -> 3 -> 4 -> 3 -> 4 -> 5. By moving like this, it's so much easier for us to transit between DP states.

Firstly,really thank you for your forgiveness on my rudeness and your deeper explaination. I somehow understand what you have said,and I will have a try.Thanks for your explaintion and patientenss again!(sorry for my poor English....)

Auto comment: topic has been updated by atoiz (previous revision, new revision, compare).How to solve Div 1B/2D if the player can't choose a pile that he/she has chosen in his/her previous turn.

.

In Power Sequence, I tried to find the sum of first n terms of GP such that the first term is always 1 and the common difference keeps incrementing in a loop until it exceeds the limit as specified in the editorial above and inside that loop I'm storing the minimum of the difference of the sum of n terms of GP and the total sum of the array but this logic is not passing the test cases, can someone help me find fault in this logic.

Sn = 1*(pow(i, n) / (i — n)), res = min(res, Sn — arr_sum)

The difference between the sum of n terms and the total sum of the array isn't necessarily the sum of absolute difference between $$$a_j$$$ and $$$i^j$$$ for all $$$0 \le j \le n - 1$$$. You can check it for yourself.

Hexakosioihexekontahexaphobia is the fear of the number "666."

Round no. 666 ---> The Roman numeral for 666, DCLXVI, has exactly one occurrence of all symbols whose value is less than 1000 in decreasing order (D = 500, C = 100, L = 50, X = 10, V = 5, I = 1).

[To know more on the 666 number ](https://en.wikipedia.org/wiki/666_(number)) You may find it interseting. Thank You !

For CP & CHEMISTRY LOVERS — 666 is the Molar mass of the high-temperature superconductor YBa2Cu3O7.

Slow and Steady(Editorial) wins the race. Late but Nice Editorial. Thanks to the organizers & codeforces.

When the no. of comments on Announcement are greater than the no. of comments on Editorial ( 666 Round) ...XD

I love the way you give python its deserved importance!!!!

Haters gonna hate python !!!!

In B problem, if the input is suppose 1,13,4 is this not already power sequence but according to the solution provided the cost will come as 3, as first we will sort and then increment 13 to 16 so the array becomes 1,4,16. Can somebody please tell me, am i getting something wrong from the quetion is'nt the cost supposed to be zero?

I think you should reread the statement for further information. Remember the common base c must be a

positive integer.In the div1 D editorial: "It can be proven that $$$f_x$$$ is non-decreasing, i.e. if $$$x<y$$$, then $$$f_x<f_y$$$." There is a minor typo — $$$f_x \le f_y$$$

Fixed. Thanh you!

I might be wrong, but the problems (B, C, D) should've been cyclically rotated. D felt easier than B and C to me.

I agree. But some people seems to have different opinion.

in problem stones game , what happend if the stones are 2,2,2 . according editorial HL is winner but according to sample problem T is winner, so it is wrong solution

I don't see [2,2,2] in the sample problem...You may have misread something...

Thank you for the fastest tutorial!

author solution of problem B in c++.. why n is subtract in this line?

int64_t ans = accumulate(a.begin(), a.end(), 0ll) — n;

In div 1 C editorial there is a small typo: "Therefore, we will calculate $$$dp(i,0/1)$$$ as the minimum time to finish first $$$a_i−1$$$ stages.."

It should be "the minimum time to finish first $$$i-1$$$ stages.."

It was fixed, thank you!

Can someone give a simpler proof for Stoned Game.I am not able to understand that when each pile has atmost sum/2 stones then how can we find the solution.Why it does not depends on the order of moves and only on the parity of total stones.

It'll be helpful to break the question into smaller parts and analyse it. Firstly, it is easy to see that if there is an element greater than $$$\lfloor \frac{sum}{2} \rfloor$$$, T can keep picking from it and win. Secondly, if we ignore the rule that one cannot choose a pile that has been chosen in the previous turn, it is easy to see that the solution depends on the parity of $$$sum$$$.

Now the interesting part — if initially there is no element greater than $$$\lfloor \frac{sum}{2} \rfloor$$$, either of the players can ensure that this condition will never hold on the other player's turn, i.e. there will never be an element greater than $$$\lfloor \frac{sum}{2} \rfloor$$$ on the other player's turn (think about how this can be done). Who will want to ensure this condition will not hold? Simple, it will be the player who would win if there was no restriction on the pile to be chosen, so if parity of $$$sum$$$ is $$$1$$$ it will be T else it would be HL.

in the problem stoned game why can't we define a winning state as the xor of all stone numbers in each pile be 0. if T starts and the xor is 1 means he can always win as he can always reach the winning state ie make xor 0 by removing some stones if initially xor is 0 then HL will always win as HL can always reach the winning state.

can somebody tell the flaw in this logic ?

1386C why does the '1->1' transition make significance? I think the corresponding '1->0' cannot be a worse choice, but some errors happened in Test7 & Test8.

I am sorry for asking late but I am not able to understand div1 C/div2. E. The boss can move to adjacent stages , does it mean the boss can move to adjacent only one time then return to its original state?

In editorial, it is said that return to this stage later to kill the boss. I didn't get how will we always find the boss in this stage and will it always be optimal.

Thanks in advance:)

In problem B, why they are taking 1e17, some has taken 1e14.. can anyone explain it.

Any suggest for Div 2 C? I'm totally out of ideas

Bezout's lemma

Great solution for problem C ,THX

Is it possible to solve Div 1 B using Sprague Grundy? Can someone explain how or why not?

in stone game, greedily choose the pile with most stones (for both players) seems to be able to AC.. 109435178

++cnt[ch — 'a']; means

I try another approach in Problem B.

First sort the array

then find the max element called it "max", which is last element of array, because we sorted the array.

Now we take (n-1) root of "max" called it "r"

here "r" may be not integer, so we have to check for two numbers a=floor(r) and b=ceil(r) eg. if r = 5.67 so we take a = 5 and b = 6

now we generate two new power array from this two number and sum of abs different between all element of this array and our sorted array do this for both "a" and "b"

and ans will me minimum of this two.

Here is Python code.

Time complexity O(n)