Hello again! After merely eight days (personal record!) from my last contest, I gladly invite you to Codeforces Round 1082 (Div. 1, Div. 2) — which will be held on Feb/23/2026 17:35 (Moscow time)! For both divisions, you will be given $$$\mathbf{2.5}$$$ hours to solve $$$\mathbf{7}$$$ problems, where some problems may be divided into subtasks.
All problems of the contest are invented and prepared by myself.
I would like to thank:
- Sugar_fan for his excellent coordination.
- Alexdat2000 for Russian translations.
- Um_nik for pre-reviewing problems.
- sammyuri for MVP testing (crazy, outstanding amount of contribution to the round!).
- Proof_by_QED, satyam343, reirugan for VIP testing (big contribution to the round!).
- EvenImage, StarSilk for red-black testing.
- cadmiumky, __baozii__, prabowo, Intellegent, A_G, nifeshe for red testing.
- weirdflexbutok, misteg168 for yellow testing.
- fisher199, shcal, Vikas_soni, madlogic, Hori, wakanda-forever for purple testing.
- Argentum47, vodacbaoan, simplelife for blue testing.
- MikeMirzayanov and KAN for great platforms Codeforces and Polygon.
- You for participating!
The score distribution is as follows:
- Div. 1: $$$(750+500) - 1250 - 1750 - 2250 - 3000 - (2750+1500) - 5000$$$
- Div. 2: $$$750 - 1250 - (1000+750) - 1750 - 2500 - 3000 - (2750+2500)$$$
I wish you a thrilling experience in the round. Good luck and have fun!
UPD1: Added score distribution.
UPD2: Editorial (now complete!)
Also, congratulations to the winners!
- Div. 1:
- Div. 2 (
Maybe subject to change when cheaters are found):









As a VIP tester, congratulations chromate00 for the very orz personal record!
orz reirugan for VIP testing
As a tester, I can confirm chromate00 authored between 0 and 9 problems.
chromaid my beloved
If my contribution back to positive, I will participate in this round, otherwise meh!
I discovered this blog before any comment posted, I should be the first to comment if I'm not cursed like this :(
I am sick of this limitation because of low contribution:
Just a tip, asking for upvotes on online forums typically doesn't go well...
So what should I do? Should I ask MikeMirzayanov directly to remove this limitation?
Look how long it takes for me to reply your comments! I should be able to do that instantly if this cursed system is not implemented!
Write less comments.
The more I restricted the more I want to fight it, but yeah, I think I need to cool off from this cursed system and community. I guess :( See you next time o/ Thanks for the tips! Hopefully when I'm logging in again, I will see my contribution become positive again ;)
I'm back and my contribution even goes more negative than ever T_T
Jokes aside, its really hard to get a -66 contribution man Great Work, keep up the grind!
You only need one more negative for the funny number
doesn't need anymore :3
Alright, I'm not joking, I will definitely skip this round! Look at what you all did! Now I'm on the bottom of the last contribution page https://mirror.codeforces.com/top-contributed/friends/false/page/341 :(
Ok you all win, I will definitely participate in this round at all cost:
Please, please, stop downvoting me :( Sorry for making bad comments!
Stop leaving trash comments!
You don't know how stressful it is to have negative contribution! I'm sure your life is very lucky that you don't even understand how I feel :(
thats rough buddy
As an MVP tester, I demand a share of the author's compensation
orz orz orz orz orz sammyuri for MVP testing orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz
strongest clash royale player js made another div
I am not Mohamed Light twin :wilted_rose:
no ur chroLight00 :)
you should make the clash royale theme contest it will be fun
Agree ;))
As a tester, chromate = chromaid
as a first time tester , wish you good luck and lot of positive delta
Where will the basement be this time?
I believe they will be sent to chromate's basement, where they will be forced to create new problems non-stop (how do you think he pumps out these contests so fast?)
I am glad to participate in your contest after eight days! Personal record (I'm participating chromate00's contests twice in 8 days)
As not a tester, problem A will not require XOR convolution in the intended solution
Back to back chromate rounds....so orz sir. Hope this one will be more good than the last one(it was good too :XD) :XD :XD :D :D orz orz orz chromate00
I'm going
Hope to reach my highest rating:)
Yeah i also want to break my all time high in this round.
Best of wishes to each contestant! Even though I’m not taking part.
34th comment
The problem A has 750 points instead of 500 in division 2... I don't know what will happen.
Hope to solve 3 problem
Hope to become specialist after this round
I have lost streak due to this maintenance.I was continuously solved for the fucking 71 days but due the website only which was not my mistake ,I have lost this continuity.
It is your mistake. They had clearly mentioned days in advance the exact from and to time of maintenance, which was not covering the whole day. If you really cared so much, you would have fixed a convenient time to solve at least one problem to maintain your "streak".
But sure, lets blame it on the maintainers for doing their job, and not your ignorance :)
Bro ! Semester exam is going on that's why I could not see the message ,last time I had seen it but this time the website was not working for 18 hours .
? still your fault
Bro ! I know i have not seen it but there must be some rule for this .
can't wait to see the editorial of div2B ... he he he !!!
I found it very tricky but then I printed possible values and observed something and then just guessed based on that
my observation was if we break string into chunks of 2.. both chars can't be same in a chunk .. and it passed pretests
for me
B >> both CThis observation can be proved if we create a DFA of the states involved. These states would be involved:
The transitions are
ok thanks. I will think about this.
Nice contest! <3 But… is this actually Div 2? It feels a little weird to me.
Very nice contest! I love problem B and C2, they are very cool :)
how did you do B
DP :skull
whoa I didn't get idea of linear dp, can you please tell
I thought dp would not work (tle) so didnt try it. was it standard dp or did you optimize it or something ??
dp[i][j]means that at index $$$i$$$, is the prefix $$$[0, i]$$$ valid and the start and end of T is j ($$$j = 0$$$ : "$$$aa$$$" ; $$$j = 1$$$ : "$$$ab$$$" ; $$$j = 2$$$ : "$$$ba$$$" ; $$$j = 3$$$ : "$$$bb$$$").
invariant in parity of ?? continuous
sorry, this is not clear to me :(
I did some bitmask magic to solve B: 364071388
reading this code will kill my small number of brain cells .... aaaahhhh !!!
can I please ask for mercy and request you to summarize the logic for me !!!
There are 3 cases if in the middle of the process the string
Tis:bab...bab: you can append at most2consecutive'b'intoSand can't append'a'intoSaba...baborbab...aba: you can append at most1'a'intoSand at most1'b'intoSaba...aba: you can append at most2consecutive'a'into S and can't append'b'intoSIf
nis odd, you start with case3, ifnis even you start with case2Note that on case
n, if you addatoSit will become casen-1, if you addbtoSit will become casen+1, if?is apper it means it can go to casen+1or to casen-1, and after addingnstrings to S, you want to end on case2(a and b is balanced).The bitmask part is not important, it is just to simplify writing the code. On my code case
3(become mask4binary:100), case2(become mask2binary:010), case1(become mask1binary:001).The bitwise operation become:
n-1become binary right shiftn+1become binary left shiftn-1and casen+1using bit or for both logic above.If mask
2is "on" at the end than it is possible, otherwise impossible.thanks so much for the explanation, I will try to understand the code with this
Indexing is 0-based.
If n is even, then for every k, we must have {x[2k], x[2k + 1]} = {'a', 'b'}. The reason for this is because if n is even, if we pick from the front we get 'a' and if we pick from the back we get 'b'. But, if we pick 'a' from the front, then the front and back are both 'b', so we are forced to pick 'b' next. If we pick 'b' from the back, then both the front and back are 'a', so we are forced to pick 'a' next.
If n is odd, you have to pick 'a' first and then you are left with n — 1 choices. Since n — 1 is even, the odd case actually reverts to the even case.
yeah I guess that makes sense
ODD becomes even after one step but that step is fixed as character at both ends is 'a'
for EVEN you can either take 'ab' or 'ba' and then it again becomes an EVEN case so that is why chunks for size 2 are formed
thanks this helps me clarify the logic a bit.
nice contest, enjoyed problem D
B >>>> D
$$$A$$$: Guess from testcases
$$$B$$$: Guess on your own
$$$C1, C2$$$: Good problem
$$$D$$$: Guess again
man it wasnt a guess you simply had to figure out maths in a x can be just 4x+3y+2z and y as -x and z if you will run through example youll realise you need 4 only when y is negative you can make y as zero d wasnt guess again too
Yeah should be, but my stupid brain that just woke up from sleep did spend ~30 minutes on problem A guessing the pattern:
nah on B, I did dp :)
i just iterated from end of string, after every 2 iterations count(a) , count(b) must be same for "YES" else "NO"
also there are some edge cases for odd "N" so we need to write some conditions for it
A is hard ngl QAO B is fun C1 is a little bit tricky, but i guess it's my problem C2 is easy when you solve C1 D just trick me with the sample testcase lol
fuck ass contest
Amazing contest!, problems were so cool and enjoyable ^_^
Felt A harder than B :(
can you tell logic for B please ?
From the problem title it can be guessed that we need to check the pattern "ab" throughout the string. and from rule 2 we can say that if starting element is "b" it will be appended to last, thus ending become *bb which denies the rule. Thus, using above 2 cases we can say if it can be formed or not.
ok, thanks.. I will think about this
You can create an "aba..." string of the same length as the given string. Then, keep two pointers on this string one at the start and the other at the end. Simulate choosing the characters using these pointers. If we encounter a '?' and both pointers point to the same character, we choose that character. If both pointers points to different character, we check the next character in the given string and choose the opposite one to that. If the next character is also '?', you can pick any character.
ok, thanks ... didn't understand well.. but I will think more about this.
I couldn't solve A :-(
Could someone please give me an idea on how to solve it.
realize that using the 1st operation and the 3rd operation is the same than using 2 time the 2nd operation, so that makes you realize that when u use 1st operation u just ignore 3rd and work with 1 and 2 op, and viceversa, after that u just make the 'y' be the one u want and check if u can make the 'x' to be what u want too, then if u can it's 'yes' otherwise 'no'
when i say to make the 'y' what u want i mean it only using 1/3 op, that depends in the sign of the 'y' in the input, after that u can only use 2nd operation
Thanks!, i was so close still couldn't do it.
Let $$$A, B, C$$$ be the number of moves of the mentioned types. Then we must have $$$(x, y) = A\cdot (2, 1) + B\cdot (3, 0) + D\cdot (4, -1),$$$ which is a system of equations over non-negative values $$$A, B, C$$$. Working out the system, you will get
$$$B = (x - 2y) / 3 - 2C$$$ and $$$A = y + C$$$.
Note that knowing the $$$C$$$ we will know $$$B, A$$$ using the above relations, in other words all solutions can be parameterized by $$$C$$$. We must ensure that
checking that all above conditions hold, gives the answer
Thanks!!
It was quite simple first bring y to 0 and change x accordingly and then check if x%3=0 ie if you can reach x with jumps of 3 which is 2nd operation.
oh wow, did not thought about the problem in this way. This makes it so easier. Very Nice.
Think of it as a 1D problem instead of 2D. First try to reac y from 0. y can be reached from 1st operation (if y>0) or 3rd operation (if y<0). after reaching y check if the x we reached after reaching y <= target x or not (if not then return NO). now we just need to check if we can reach to target x or not. there is two type of horizontal movements we can do.
use operation 2 to move 3 steps
use operation 1 and 2 both and move 6 steps
as 6 is a multiple of 3 itself, there is no point of using operation 1 and 2.
so simply just check if the remaining distance in x direction is a multiple of 3 or not!
Such a good explanation cleared my doubts. Thanks a lot.
can anyone help me on how to optimize double for loop or is my approach a bit off
https://mirror.codeforces.com/contest/2202/submission/364095248
$$$O(n^2)$$$ does not pass
yeah thats what i asked how to optimize my solution or should i just think of some other approach
other approach
Div2 E is very nice problem, if the contest is ~30 minutes longer, I think could solve it. I love "thinking >>> coding" problems <3 Thank you problem-setters :D
Omg absolutely epic round with epic problems but a bit hard for div.2 I think.
First step of D1D is the same as the previous ICPC East Asia Final task.
wtf why my $$$\sum d(n) \log n$$$ got tle on 1E
i spent 1h optimizing it but still can't get through, 3.5s is to narrow i would say
I kind of wanted to make them realize that sum of $$$d(n)$$$ is $$$\mathcal{O}(n \log \log n)$$$ and therefore the time complexity is fine, and then there's bitset solutions that pass within the TL unfortunately
That being said all of our intended (including tester's) solutions pass in around $$$1.5$$$ s or less
C2 baited me to solve it, D was so much easier compared to it :tears:
Like the problem C2!
But missed D because of a silly miscalculation! :(
could anyone give me a hint on how to solve c1 .
i tried using below method
~~~~~~~~~~~ ll n; cin>>n; vector v; for(int i = 0 ; i <n ; i++){ ll temp; cin>>temp; if(i==0){ v.push_back(temp); continue; }
if(v.back() != temp) v.push_back(temp); } ll m = v.size(); vector<ll> dp(m,1); int i = 1; while(i < m){ if(v[i]-1 == v[i-1]){ ll maxi = v[i]; ll mini = v[i-1]; int j = i; while( j < m && v[j]-1==v[j-1]){ maxi = max(maxi,v[j]); j++; } while( i < m && v[i] > mini && v[i] <= maxi){ dp[i]=0; i++; } } else i++; } ll ans = accumulate(all(dp),(ll)0); cout<<ans<<endl;~~~~~~~~~~~~~
cheating situation is insane because i do NOT believe there's almost twice as many div 2 people that solved 1F1 compared to div 1 (and almost the same amount on 1F2)
div 2 G1 and div 1 F1 are not the same problem btw
They are?
2G1 is easy version 1F1 is medium version
ok i see, though after some manual checking (i checked around 20 random submissions) most of the ACs on G1 would have ACed on F1 and F2
Today I learned from 1D that if s is a set/multiset,
s.erase(s.end())runs forever (at least on my laptop)... Thankfully I still solved it in time regardless.D was good, I loved it
couldnt solve it in time but solved it using queue
I think stepanov.aa getting -60 is a bit sus
what
strange delta
oh i see what you mean now
for some reason it shows rank 41 on his contests page... maybe a bug? his last submission was just a few seconds before contest ended, maybe it didn't count for some reason, weird
yep
Loved the contest!
Although couldn't solve E in time, but still liked it
Somehow i got negative delta, AI is improving so fast...(
I'm curious, if today's bleeding edge AI is rated, will it reach grandmaster level?
considering AI can AK today's div2 (which is around top 2 div 1 performance with extreme speed which AI is really good at), 100%
https://mirror.codeforces.com/contest/2202/submission/364120605
this is my submission for C1 can anyone tell me where i am getting it wrong
Try this input to your program:
Expected answer:
2Your answer:
1You can't make sequence
[1, 2, 3, 4, 2, 4]with just[1]!C is absolutely trivial but I unfortunately wasted an hour trying to solve a misinterpreted version of it. I thought that you could only insert increments after the original m elements.
So, for example, for b = [1, 2, 3], f(b) = 2. But for b = [1, 1, 1, 1, 1, 2, 2, 3], f(b) = 6.
Oh well. Hopefully problem statements will be clearer in the future.
Does anybody know how hard the Problem D ( of Div.2 or problem B or Div.1 Recollect Numbers) is? It hasn't been shown in "tags"
--
chromate00 I am just curious why Div1 E wasn't included in Div2 as well. I guess the most obvious answer is the constraints on number of problems, but I believe that Div2 G1 and G2 were too difficult to have 100+ ACs (considering that most of the cheaters who submitted G1 only would have passed G2 as well). So, wouldn't be including Div1 E as Div2 G was better; or setters decided that convolution was a hard topic for a usual Div2 participant to know?
Just my opinion and assumptions, would love to know the thought process behind it.
During testing phase we believed that Div2G1 < Div1E (the intended solution of Div2G1 is bitsets), and so I thought this change would allow more legitimate participants to get an interesting contest experience rather than a big difficulty spike (which, as I feel, many Div.1 participants are okay with difficulty spikes around late contest as it happens all the time?)
Why is the ranking shown on my profile page (4320) inconsistent with my ranking on the overall contest leaderboard (1471)?
Also, the virtual rating I calculated using the Carrot plugin is 1610, but my rating seems to have been adjusted based on the ranking shown on my profile page instead. Was there a mistake?
Hi, can somebody explain me how rating updating works?
I got -2 rating after round. In my profile you can see that I am on 1648 place. But if you open Div2 standings, I am on 343 place, and other participants with my rating received a positive delta.
Hello, it wasn't explained in the announcement (because I wasn't notified so), but it looks like there was a trusted participant standings only in Div. 2. The rank you see in Friend Standings is your actual rank that includes un-trusted participants.
In Friend Standings i am on 343 place too :(
Huh, weird......... I'll ask the admins to look into this matter
We've looked into this matter, it seems that the ratings were updated when a few submissions were left in the queue. We'll make sure that the ratings are correctly applied, you'll certainly see the changes when the rating recalculation happens.
Thanks a lot!
Why the difficulty of F2 is lower than F1?
