Hello, Codeforces!

I'm very glad to invite you to the first **Cuban round** Codeforces Round #659 (Div. 1) and Codeforces Round #659 (Div. 2) which will take place on Jul/24/2020 17:35 (Moscow time).

All problems in this round were created and prepared by mnaeraxr, gilcu3, dcordb, jcg and me. We tried to make them interesting and diverse and hope that you will enjoy them!

You will be given **2 hours** to solve **6 problems** in both divisions, and we **highly** encourage you to read all of them :)

We would like to thank:

antontrygubO_o for amazing coordination of this round.

Um_nik, gamegame, ffao, RussiaMustDie, isaf27, balbit, Tlatoani, prabowo, Kuroni, hugopm, MagentaCobra, qlf9, faremy, golions for testing the problems and providing invaluable feedback.

MikeMirzayanov for providing Codeforces and Polygon platforms.

~~The score distribution will be announced shortly before the round (or earlier).~~

**UPD:** Here is the score distribution:

Div2: **500 — (500 + 750) — 1750 — 1750 — 2500 — 2500**

Div1: **1000 — 1000 — 1750 — 1750 — 2000 — 2250**

Good luck and have fun!

**UPD: The editorial is ready** Editorial

**UPD: Congratulations to the winners!**

Especially for tourist, Benq and Radewoosh who solved all the problems!!!

Div. 1:

Div. 2:

I hope for an interesting first cuban round :)

This round was not at all interesting.

It looks like someone forgot to mention that the contest was for Russian 5th to 8th graders. (No offence intended).

Anyways, this just makes it more exciting. Thanks for this round.

New round to avoid : Cuban Round

It became really interesting when I tried submitting the first problem and not to mention, when I started reading Problem B.

I became depressed after reading problem A & B also C

C was the real saviour

I was like A will never left me but today A left me.

Who is this Koa the Koala and why does she want to cross the shore?

Google's first result for

"can koala swim?""Koalas

drownin swimming pools when they are looking for water to drink. Although koalas can swim, if there are no assisted ways for a koala to climb out they will eventually drown."did someone forget this was a coding round and not a reading round?

why is everyone downvoting because of the contest... :(

I started reading the first problem , and before i could even see the test cases , the round was over...

I suggest improving your reading comprehension before trying a competition. Good Luck!

I would rather do Eva than doing these problems

Score for B1 should be more than C. Currently B1 score is significantly low than that of C. And every one knows the level of these 2 questions.

After seeing too many Red coders as testers, we should prepare ourself for such a lengthy, disordered(e.g. problem B and C order) round.

Shitty memes incoming!!!!!!

Lol you are from Havana University

What's lol about that?

what is cuban round ?

The authors are from Cuba.

oh.

This comment is downvoted. So i can assume my answer is wrong. People who are downvoting can you please tell me what is the correct answer? I really want to know.

The authors are from Kuban

No, the authors are from Cuba

No. the authors are from

Kuba.a bad round

As a tester, I finally get to make one of these posts.

[gets contribution]

[gets contribution]

xD

exit(0);

[gets contribution

as a participant, your tester post sucks

This comment was downvoted by trolls

Come with me sir, we're gonna find out who tf asked.

Last time with this much red coders, we saw something dangerous.

we should have seen it coming

When last contest is rated and you want another contest to participate in and you are happy and confused at the same time!!!:

What is the story behind this image btw?

I put this image, cause there is a happinnes and confusion at the same time, like my feelings

okay

Everyone using this platform should know about him. :P He is MikeMirzayanov

Will it be IQ test round? I like IQ tests.

As a tester, I can confirm you need a brain to solve these problems.

Writing 'As a tester' was really important for that confirmation :p

MagentaCobra How much problems did he reject this time xD :)

I'm pretty sure he rejected ~15 problems

After the contest can we have the rejected problems for practice?

No, they are recycled to be rejected in next contest again.

After the contest, I was convinced that I have no brain :(

Man...I should have read this before the contest:(

As a human being, I can confirm that everyone has a brain smh.

As a tester, I’m glad I tested.

Seems like we are again going to have round 657 with less than few hundreds people solving C

[Enjoy your contribution] .

As a participant, I should've known what you were saying.

Now we know what happens when DEVIL himself wishes Good luck)

There is an amazing team behind this contest. I'm looking forward to participate. Good rating everyone

As a non-tester, I'm glad that I'll be able to participate in it <(")

So, how did the contest go for you ? XD

My ratings didn't go down, so it was good I guess :\

So happy

Still holding to this opinion after the contest? ¯_(ツ)_/¯

It's irony, the contest is so happy, it's like yesterday's contest.

Imagine getting back from retirement for a Cuban round, writers are all amazing. Looking forward to it, see you in the standings, altho I prolly don't pass a,b :). Удачи

This round makes me want to retire.

The Div1 part of the contest is shown in Calendar on saturday, too. I think this is not intentionally.

We still remember the last red round

After a long time Um_nik became as a tester. I hope this round will be great.

Fake news

It's a good opportunity for me to become PUPIL again :)

Or maybe become Expert B)

well, you don't bacame pupil :)

Congratulations! :)

Yes, i have heard of Cuban. Krasnodar is the best city.

No no no, not that Cuban. This Cuba

Why do you downvoting me? That was just a joke. Of course i know what cuban means. Why do you upvoting some captain obviousness who didn't get the joke and tried to "explain" me what Cuban is?

Some people just don't get sarcasm, man. I upvoted you and am glad that your comment is now receiving upvotes too.

.

Div2 ACount the number of peaks in the rating graph of dcordb

WA on pretest 2

Div1 FCount the number of peaks in the rating graph of ruban

Time Limit Exceeded on pretest 6

I wish this was div2A instead of the real one.

As a participant, I am all scared looking at so many Reds

You were right.

You can do it! who want to become green, blue, ...

Who can do what?

you can become red

Ok

shut up!!

Your DP says that you stopped caring a long time ago then why is it bothering you. Everything gonna be alright!

Very excited for my first contest! I have covered all the basic data structures in past 1 month . Now I am looking to take part more frequently . Any suggestions on how to be consistent and any further resources ??

Bad Luck ! You chose the wrong contest.

In codeforces round When I submit the problem and it gets pretests passed in very first submission. Ooh that feelings can't explain in words. When I am writing this I am crying with smiling face

I think you haven't experience that feeling when you submitted it WA 10 times and the 11th time is got Pretest passed. Literally crying with smiling face.

As a tester, I wish every participant good luck and high rating on this (very nice) round!

I Hope Cuban round will be as good as Cuban Cigar. :)

A very interesting score distribution!

score and difficulty level no match at all !

Perfectly balanced, as all things should be

Hmmmmmmmmmmmmm.

Now again

( ° ͜ʖ °)

He should have waited for CF round #666.

How about we reserve CF Round #666 to be held on 13th November, 2020 (Friday the 13th) and ask Devil to hold it?

Only 7 contest in 4 month? I will lose my sanity

Maybe we can try "some" educational rounds!

Round 666 is coming up :)

lets make it 666 again

The cursed contest.

Wait, do we have subtasks in div2(asking because of the score distribution/and that it isn't mentioned)

I suppose because in the format given like (750 + 750 ) suggests so

It is written there will be 6 problems, so I think (500+750) => B1 and B2, B1 being subtask:)

I think that you should also author the seventh round following this one.

hello darkness, my old friendWill

Touristtop the tables today??Yeah.

Hope,this first cuban round will be very interesting :D

Interesting score distribution! GL & HF!

ups

A sub-task for B? This is going to be wild.

My schedule this summer,

EAT -> PARTICIPATE IN CF CONTEST -> READ EDITORIAL -> SLEEP

REPEATohh...which country are you living here it is rainy !!

Same!

CF has keeping me sane for the summer

you forget one part: LOSE RATING

good luck to you ！！！

MikeMirzayanov Just curious to ask when running 2 contests (Div1 and Div2) you use the same server fot both the contests or 2 different servers (with Div1 having less specification server because of load)

Another Anton Round!

touristregistered for the contest, I think he'll take his position today!i am having 1940 rating. and I don't want it to decrease for next 2 month so just wondering if someone can tell me how much maximum rank can ensure me 0 decrease? like any idea? is around 1000 fine

There is a way:copy code and get "skipped".But your account might be blocked

.

The meme is as hard to understand as solving Div.1F

You mean div2A?

incase anyone didn't get the meme carefully read the second line of the announcement!

See HereI'm very glad to invite you to the first

round Codeforces Round #659 (Div. 1) and Codeforces Round #659 (Div. 2) which will take place on Friday, July 24, 2020 at 20:35UTC+6.CubanThe new strategy to decrease server load is working!

Seems Red Coders doesn't think of beginner coders !!

Again a Div1 type contest :(

Applicable to Div1 participants after solving A and B as well

Glad I didn't submit even a single code!

div2 feels like div1 :(

Last contest was such a class. Back to unnecessary complicated questions. All problem setters should learn something from Monogon and Ashishgup.

I know I am going to get downvoted to hell, but needed to get the truth out.

+1,I love Monogon's problem and this contest is quite bad.

Some of Ehab's math problem are also good.

Second that! mohammedehab2002 is my favourite setter, and Monogon is close second!

Since ^ comment is getting some attention, I want to add if we can come up with a way to voice our opinion about the round? Maybe upvote/downvote a contest or individual problems?

I am not against harder problems but there's a difference between good kind of hard and bad kind of hard.

UPD: Figured what was wrong on pretest 3. Sorry for spreading hate.

I'm a newbie. I didn't even understand the questions.

It's Okay. Nobody did.

my confidence is indirectly proportional to length of questions

My confidence is directly proportional to length of questions. I cannot solve and more people cannot solve.

Reading div2 B1-B2 problems is more difficult than doing a plank.

Worst score distribution i have ever seen in Codeforces!!!

Div-2 contest doesnt seem to a div-2 type.No balance in problems at all.

Seems like that was the case for Div1 as well

Looks like Devil's plan at work here.

Plan of unexpected statements!

If the frequencies of these types of contest increases, it will inculcate the feeling of fear in beginners' mind towards competitive coding. No offense to anyone.

you asked for harder questions, so there you go :P

who the hell asked for it? <(")

Me after reading Div2 A, B1, B2:Not worth complaining about the difficulty of the problems. Just improve next time and learn from your mistakes.

Do not trust someone whose account name is Devil

Kudosto allproblem settersand team. What a contest.I realized that need to learn more practice more.There are better ways to learn that fact.

i was able to solve the first one phewwww!

That's an achievement. Not kidding at all. You should be proud of yourself. I am unable to figure out where my code is failing for past one hour.

Ok, so here it is: link

However the contest is. It is rated or unrated you must not share any solution during contest.

[Deleted]

Another difficulty staircases

Yeah, and I bet most of users solved problem B by guessing solution, not even having proof...

You'd bet that but you'd be wrong. If you actually could guess the solution, then it wasn't too hard to prove three or four cases.

In my opinion

I thought WA on pretest 2 sucks the most, but today I learnt, WA on pretest

3sucks the most. Getting WA on pretest 3 in C :(Nvm I removed an if case and it worked. :)

tourist returns to #1 !!!

(Oh, now it won't be broken.)

Except tourist himself.

Wait... Has Codeforces increased the difficulty of Div.2???

The language of Div.2 B1 was very bad. :(

I happy for tourist, he will return to it's normal position :) tourist

You should not add someone's handle unnecessarily

Monogon's Div.1 contest was MUCH better than today's contest. problems were unbalanced and Div.1 B was terrible problem...

Why do you think div 1 B was a terrible problem?

wtf? Div1B was a really nice problem imo.

Div 1B was pretty interesting in my opinion.

If Div1B was terrible, then please come and read Div2B1 (and B2).

TFW you not only fail to solve div1A, but can't understand why your solution to div1A is wrong.

Same! But I suppose I'm somewhat relieved/surprised to see a grandmaster say this! No offense ofc.

I still have no idea how to solve that problem, although something did pass pretests eventually. Had to move to more trivial problems like E instead :)

Go through all letters in increasing order. For each letter, get the minimum of letters that this letter needs to be converted to (lets aabb — xyxy: a converts to x and y, take the smaller one), then convert all the letters (a) to the lexicographically smaller one (x or y) (note you need to skip letters that are already ok).

What do you mean?

For that one it's

`aabb bbbb xbxb xyxy`

(according to my code + my manual attempt)

So the transitive reduction of a DAG isn't a subgraph?

Transitive reduction requires that there is a path from a to b if

and only ifthere was a path from a to b in the original graph. This problem doesn't have the "only if" requirement.24 (Dadgum.)

I thought that adding more edges can't hurt the number of operations...

Acc. to my code,

aabb->xxbb->xxxx->xyxyYes! Me too. WA on pretest 3...

I also had a wrong pretest 3 at first and then I implemented a (in my mind) equal solution in a different and it worked lol (solution is back down). What I did it first was: go through letters in increasing order, if a letter is not good then convert it to a letter that also exists and needs to be converted to the same letter (ignore if it's already good, convert directly only if there are no such cases). Idk why this approach is any different than my other, could be just a program error since it's a bit more complex.

I spent two whole hours battling pretest 3, only to no avail.

It feels like the contest is based on some olympiad for students of 5-8 grades

at least there were interesting problems

PTSD intensifieswhat do u mean. is there similar tasks or what?

That round was extremely tough for a Div2, people were joking about how skilled Russian 5-8 grade students must be to solve it. Now this round has somehow managed to be even tougher.

Normal Div2 round: Kalm

some olympiad for students of 5-8 grades: Panik!

I have a strange question. Who is

Koa the Koala?And why is it ruining my div2?

the devil himself.

Kind request to stop such bullshit Div2

lol, there was a duplicate test case in problem B. ~~~~~ 5 2 3 1 2 3 2 2 ~~~~~

I was unable to reach sample test case left the problem after reading the problem statement only.

Then how about the REAL CF Round #659 div1? Say, div0?

No, In div1, we are crowd in div1 standing!

bad problems , bad statements . didn't enjoyed this contest .

This contest is not worth 2 hours of 20k Div-2 participants.

thanks antontrygubO_o for amazing coordination of this round.

Now I am wondering about him antontrygubO_o. He didn't even realize about the problem statement of $$$Div2B$$$. F.

Anybody else having had problems opening the page of their room?

Devil $$$2B$$$, Devil $$$1C$$$.

Devil Statement, Devil difficulty.

Can someone explain why this idea gives WA3 in Div2-C / Div1-A?

If any letter needs to be changed to an alphabetically smaller one, output -1.

Otherwise, build a directed graph (e.g. a matrix) where

`graph[a][b] = 1`

iff we need to change a to b at least one index, a<b.Then, drop the unnecessary edges. An edge a->b is unnecessary iff there is another path with more nodes that connects a and b. Note that the path will contain strictly shorter (in the alphabetic sense) edges, so we can start with an empty graph and add edges of alphabetic difference 1, 2, 3, ... 19, at each point checking that the letters are not already connected.

The answer is the number of edges in the final graph. I have no idea what I'm missing.

i did the same thing, WA on tc 3.

So on the test

`AB`

,`DC`

you will print 3, because`A->B->C->D`

, right?My answer is 2. The original graph does not contain a->b or c->d, and I only ever remove edges.

Edit: Okay, I see it. The entire problem is that I only remove edges. For example, in

`aabb`

->`cdcd`

the optimal solution is to turn`aabb`

->`bbbb`

and then two more operations. My solution prints 4 because it cannot add the edge`a->b`

.Ah ok,

`AABB`

`CDCD`

, the answer is 3, because`AABB->CCBB->CCCC->CDCD`

shouldn't it be 2? coz A -> C and B -> D ?

Got it

aabb cdcd

I did something weird, but it passed pretests somehow... basically ignore the fact that the graph is directed, answer = 20 — number of connected components.

this problem can be solved by a simple dfs finding number of vertices in every component.

infxx Can you please elucidate? I tried something similar but it didn't work. 87922305

The major difference I see is that you are making the graph undirected(right?). Why so?

Norrius What is the fix for this approach?

It's really easy: just find the sizes of (undirected) connected components with DFS/BFS, let's say they are $$$c_1, ..., c_k$$$. Then the answer is $$$\sum_i (c_i - 1)$$$, because there is

somespanning tree in each of the components, and you know how many edges a tree has.I don't quite get the intuition behind this fix? Like, how did you get to this? And why does that work? I get this idea that we need to find the minimum spanning tree(taking all edges' weight as 1) for our original directed graph(but there's an issue in it). But I do not get it that how making the graph undirected solves our issue?

well

That was different

each participant's state during contest was exactly like your profile pic ...

For Problem D in div 2., can we solve the problem for each bit independently?

Edit: NVM I just proved it to my self

Proof: if you have an odd number of bits, set at a particular position for all numbers in the array, the winner will be decided in this round Other wise you have an even number of bits, and your opponent will get the same result as you for that bit position.

1384B1 - Koa and the Beach (Easy Version) is my new favorit of shittiest problem statement ever.

Pictures would have helped.

And some other story, mayby one which makes some sense or none at all... I needed to ask twice before understanding that the girl cannot swim if the water is to deep. How can somebody come up with such wired picture? This is simply the opposite of logic. I mean, why?

Yeah, adding "More formally, " just made it harder to understand.

Too time-consuming when reading Div2B problem :))

So laughy to hear, when problems are nice in easy contest, and bad in hard contets. LOL. bad != hard.

Problems were cute && hard, div2 guys just cant solve them and find it is bad && want unrated — it is so stupid && two-faces

The problems were pretty good, it's just the fact that C was a lot easier than B in div2 (You can look by yourself). I find B as a very nice problem, but it took me more than 15 minutes to understand the statement.

Yeah, you are right. I am just angry about people who wrote that problems were bad and shitty

I understood you. I'm also finding this annoying. If you understand the statements of the problems, they are enjoyable (in my opinion). I just hope that in the future, the authors will write the statements more concisely and the problems will go in increasing difficulty.

Finally a really accurated opinion. I left this community two years ago, when i retired from regionals. Now two years without basically coding at all, i return for the first cuban round, and i managed to solve A, B1, C and get a positive score given by the fact that when i retired there were approx 4000-6000 participants per round in Div2. I found out that now there are nearly 20k, but 16k of them at least, only know to cry about problems that a retired person can solve with 0 warn up, thanks so much codeforces, for leaving me this bad memory as about the first round written by my country.

To the person who i'm replying, really my most sincere congratulation, for not being one of those crying babies. Thanks!

Anyone else with

wrong answer on pretest 3in C? What was it??? :/me :(

I guess that was the first real test with many test cases. Test 2 contained some corner cases I think

Same here. Not sure what it was, but I know I did not handle a case like: aabb cdcd (Answer should be 3: converting a->b, then b->c and b->d)

C was DSU or DFS/BFS/ Spanning Tree loved solving it <3;

It was easy greedy. You overkilled it. Can you briefly say about dsu solution?

I converted all conversions into the form of A to B in a directed graph if at the end of all conversions character A was required to be converted into B . Now if A>B then always answer is "-1" , this is self explanatory. Now I added all the edges to the graph , if A-->B , Now any successful completion or conversion can can be done efficiently if for every pair A to B to which conversion is required we follow exactly one path and no more than that , this conversion can be seen as path from node A to node B in the graph. Now for a connected components if we want minimum paths to follow and connect all characters which are need to be converted into one path, we need to find just a spanning tree of the obtained graph. Thus we can obtain it easily using any technique like BFS/DFS/DSU . Thus it was a good problem of Spanning tree, I think. May be I over-killed it.

Consider the small case graph where aab-->bcc A->B , B->C, A->C. since the spanning tree of above graph will be A->B->C , which is minimum possible answer for this conversion process.

Wow, that's an elegant approach. Thank you :)

Yours Welcome , What is the greedy approach by the way.

Created a directed graph.

Then I traversed from the character 'a'. Assuming our current character is 'C'th.

Using one operation, I changed all character 'C' to the minimal character over all his sons, and now add the new childs to the minimal character.

AM_I_Learning What is wrong with my solution 87922305?

Very interesting approach, thanks for sharing.

Can you please share your approach

replied above you may check it!

Time for antontrygubO_o to resign. What a disaster.

In my opinion Div 2 C (Div 1 A) was waaaaaaaay easier than Div 2 B.

New type of contest to avoid : Cuban Round

derji v kurse, zachem ty napisal ob etom 100 kommentov lol?

Div2D/Div1B solution is really nice:

Notice that for a given bit, if it occurs in an even number of elements, then the players will either both have this bit in their sums or both not have the bit (either both have an odd number or both have an even number of the bit) regardless of the actions taken in the game. Thus, we can look for the highest bit that occurs with odd frequency. If there is no such bit, then it must be a draw. Someone will have this bit in their sum, and someone else will not, and the other bits do not matter since this is greater than the sum of all the lower bits.

So, if we call this bit b, then we can replace all of our numbers with either 1 or 0 depending on whether or not they have bit b. Now we simply need to solve the case where there are only 0's and 1's in our array, which is left as an exercise to the reader.

It wouldn't help me, unfortunately. I got almost all the conditions. I've checked if the number of 1's equals 1 instead of count % 4 == 1. I just considered 1 and 3 and did not notice that for 5, the first person also gets the odd number of elements...

But I just stuck in how to solve 0-1 array!!!Please tell me!

First, think about the case with no 0's. Who wins if there is just one 1? Three 1's? Five 1's?

Now, add a single 0. How does that change things? How about a second? A third?

bad contest with long statments

Nice way of reducing the load of the server and taking care of the long queues :P

I feel lucky for div.1 participants for not having to solve such B.

Awesome problems! From which AtCoder round did you steal E?

Jajaj thanks. It is nice to hear some good feedback. We (setters) are really glad you like the problems.

I think I finally kinda understand people who whine about terse (few details) editorials.

Yesterday I tried to solve AGC 027 E. I found an easy classification about what intervals we can compress into a single element and what the result of that compression is. But I failed to come up with the DP that would count the subsequences.

Today I see 1383E - Strange Operation which is obviously very similar (basically, rules about collapsing intervals are simpler). I decide to read the editorial of 027E in the hopes that the DP might be similar. And what do I find from the editorial?

In other words "lol that's trivial" :/

That's one sure way to make us solve the exercises "left to the reader", just put them in another contest, right?

Can you give a hint to the idea for problem E? I've observed that no zeros from different contiguous components can be in the final string, but I couldn't find a way to count all possible final strings beyond the multiplication when we don't delete any 1's.

In the end I'm not sure how much a more detailed editorial would have actually helped.

Yeah it's basically "count # of distinct subsequences" with that restriction (and some additional fiddling with initial and final zeroes, which is too tedious to think about). For each subsequence let's count only the "leftmost".

Suppose you have just ended a block of 1-s and would like to add a block of $$$k$$$ 0-s to your subsequence. Then you move find the first block of 0-s that's at least $$$k$$$ long and jump to the end of that.

Suppose you have just ended a block of 0-s and would like to add a block of $$$k$$$ 1-s to your subsequence. Then you simply take the next $$$k$$$ 1-s in the original string and jump to that position.

If you build a DP based on that you get $$$O(n^2)$$$ complexity, but it's relatively easy to optimize from there.

Were pretests strong ?

Noooo...A had weak pretests...got WA on test 15 in system testing...this has to be one of the worst contests in recent times...

Owie :(

yeah same here wrong answer on test 22 xD

Now I am eagerly waiting for someone to upload a video editorial of B and C and comment here !!!

Don't know why but I thought

is "LOSE" in div1B for the whole contest :)

what the hell was test case 3 for Div2 C ?

Not certain (I didn't get C, but know one reason mine probably failed on it), but I bet it was something like: aabb cdcd Optimal is to convert a to b, then b to c and b to d, for 3 moves. I know I was still converting a-c,a-d,b-c,b-d.

Don't you think the Div.1 difficulty gap is terrible?

in Problem D I added the following if statement 1.5 minutes before the end and it worked and i was ecstatic XD

SpoilerI really hope my Python won't TLE because there was a point I thought the pretests didn't pass because I didn't have enough bits so I went all the way up to 50 (even though 30 is enough). So I spend 20*n work for no reason what so ever and it just might cause TLE (on python it's super sensitive).

EDIT: It didn't TLE! But it was sure close. one pretest was 936ms XDDD

DIV 2 A before: You have to come up with something

DIV 2 A now: You have to write a long implementation

This submission is small

What are you talking about? it was like 11 lines of code and I was wasteful. I only used the letters 'a' and 'z'. You just have to use the last string, copy it until the prefix length, and add 'a'/'z' depending on situation.

Python solution:

SpoilerUsually there was nothing to come up for in past rounds.

Another Russian olympiad for students of 5-8 grades :D.

Highly Undistributed Difficulty Level (Div2)The Ranks of Participants who solved only A lie from

2745->infinite.It was

FastSolveProblemAForces. And was someone like me who made a wrong submission on A and faced -50 penalty,it was like like Facing the Real Devil.Ranking dropped down

Dead.We need better adjusted ProblemSets.

CiaoRating !don't worry bro you are not alone.

I wanted to drown myself trying to solve div2B

LOL you killed xD

Damn! this round was soo tough than normal div 2 rounds

Bring back the good old days when DIV-2 was actually DIV-2.

How is B1 easier than C, also why is points for B1 not even one third of C ?

Such a long statement for B1. B1 should atleast be of 1000 points.

tourist comback Top rated

My idea for div1C

Let's make a directed graph G with 20 vertices (= letters) and edges from v1 to v2 if v1 needs to be changed to v2. Then we need to get a topological sorting S for G. Since it contains loops, pick the smallest possible set of vertices which are parts of any loop (so that if we remove these vertices, all the loops will be broken), put them in front of S, delete their inbound edges and sort the rest of the graph.

The answer will be size(S) — 1.

I don't know how to find loops in a directed graph and how to find that set of vertices :/

Hm, I'm not sure I totally understand your solution, but maybe something similar would work with condensation SCC graph? I tried to think of something like that but couldn't make it work.

EDIT: Actually, I read your idea more closely. Wouldn't this imply that on the complete graph the answer is 19 when it should be 39 (I think)?

I had a feeling there might have been some solution involving bitmasks since $$$|\alpha| = 20$$$ rather than 26.