I wrote a comment for this post by AmShZ and it became too long, so I made a separate blogpost.
Contains a bit of the spoiler for 2026 day 2 problems.
On the title
I define heuristic problems as problems for which there is no reasonable way to infer the score of your solution (full or partial) solely from the problem statement PDF. Your score depends not on the objective merit of your solution, but on what the author decided to put in the input file.
Magic City has a solution that could reasonably be inferred solely from the PDF. It does not admit any heuristic that scores well. Therefore, I don’t think it is a heuristic problem.
I highly object to heuristic problems in top-level contests, especially for high school students. But I don’t think this was an issue for IOI 2026, so I would not open that can of worms here.
Problems too hard
I think the main recurring issue with the IOI (not specific to IOI ’26) is that, apparently, there are no easy problems. Not only that, it seems to me that the SC has gotten comfortable with this and settled on an unspoken protocol: use the 80-point mark as a sort of “consolation prize” and make full score totally not worth pursuing, creating an artificial “easy problem” while effectively saying, “You’re good enough, so give up.”
Classroom Game is a great medium problem up to around 80 points, which many participants got just there. So you have 80 points, and there are 20 points remaining for getting rid of just one bit. What does that mean?
- Should I continue because the last 20 points will be easy as indicated by its score?
- Should I stop because those 20 points mean, “I gave you 80 points, now get the f*** out”?
Oh, and you can write some boilerplate to scrape off about 7 points in subtasks.
The contestants would have no way to figure out, but it turns out that the answer is the latter. The model solution seems to recover the permutation $$$P$$$, which is “hacking the adversary” in my book. This is weird: it was a perfectly normal medium problem. What is the purpose of this last subtask that worths so less, requires a flawed adversary (who decides to settle with fixed $$$P$$$) and removes only one bit? If the full solutions were cut off at $$$C=3$$$ (or 13 bits), we would have a perfect medium problem.
I also want to mention that the last IOI had more of this insistance on the 80-point cutoff which made many problems weird. Remove the time-wasting heuristic Part 2 of the Triple Peak, and voilà, we would have had a medium problem. This new submission format is not of student's interest and is not a bragging point. Obstacle is a totally nice problem until the artificial $$$L = 0, R = M - 1$$$ restriction guts it. People solved a boring artificial problem, get 83 points with a solution that is not worth 83%, and are forced to leave dissatisfied because they learned nothing from the subtask. This is a bad idea, and I know that ainta disagrees with this idea.
Fractional scoring is not a solution
There are problems that are unsubtaskable and ends up in a binary scoring, because of the two major reasons:
- The problem just hinges on an aha moment (or known tools). Examples are Partition from IOI ’26, Souvenir from IOI ’25, and Islands and Circuits from IOI ’22.
- The problem has a step-by-step solution but is just hard to begin -- examples are Hieroglyphs from IOI ’24, Beechtree from IOI ’23, and Keys from IOI ’21.
Both types of problems had existed for a long time, but they seem to be becoming more common, and remember that IOI problems these days are very hard. We will see more tied scores if there are more such problems. This is where the SC started to use fractional scoring for non-batch problems. The idea is to identify a problem that can be graded fractionally and assign a scoring function to judge how good the construction is. Let’s see how this worked out:
- IOI 2026 had three(!) fractionally scored problems, in response to an almost completely binary problem set. Individually, these fractions are quite reasonable, and they do assess progress on each problem well, although it is less clear when taken as a whole. There are 19 silver medalists who are 20 points short of the gold cutoff (361.12). 20 point margin is narrow. The way to get those 20 points is to either do well on P2, write special cases for P4/P6, or be less suboptimal on P5. I do not think this is a good way to assess so many people around the gold cutoff, especially the second and third part.
- IOI 2025 had two fractionally scored problems. I think both problems were in the realm of “make a small modification and increase your points a bit,” so this encourages a heuristic-like approach. Why solve problems when you have this roulette that might give you an epsilon increase? On the other hand, there were only 5 silver medalists who were 20 points short of the gold cutoff, so this fortunately didn't affected much.
When people from the ICPC regionals suggested the same idea, the reaction was mostly negative. People said it might work in IOI but would not work in ICPC. It doesn't -- it is not working in IOI either. In the not-too-distant past (I think 2023 is an exceptionally good example) people genuinely worked to create good problem sets where the subtasks provided clear feedback on progress and also served as good tiebreakers. I hope IOI can resurrect this trend, or at least, if you are going to propose an unsubtaskable problem set, just give more medals, like in 2014.
On Qingyu's response and some philosophy
I think Qingyu's take on this is also concerning (I agree with everything he said except the last paragraph). The example of a constructive problem in this IOI is Magic City. I do not consider it the most interesting problem, and I think people have mixed feelings about it. I understand the merit of it being optimal and stuff, but for contestants, you just divide into $$$O(1)$$$ classes, try some mangling of cliques, find one of the $$$O(1)^3$$$ cases where it breaks, fix it, repeat... Overall, it is a pretty annoying problem. Better students will come up with the right pattern quickly, but this doesn't strike me as an example that original tasks have a constructive flavor. At the end of the day, these kinds of problems are the ones that get AI-ed and are used to grill math people.
What I do agree is the following. If you generate a slop batch problem, it is more likely to be a duplicate of something, but if you generate a slop interactive problem, such an occurrence is less likely. Problems of the type “Alice encrypted something with a trash crypto system (add MEX/XOR to your liking), Bob got the message, and he needs to crack the code” can be proliferated infinitely, and nowadays you have LLM to solve whatever bad crypto you came up with, right?
I'm worried about the following scenario -- people generate hard interactive problems that are not duplicate, feed it into LLM and solve it, and the IOI randomly accepts it because they have obviously not seen it and it is constructive-ish. I think this as a doomsday scenario for the programming contests at large, and I consider APIO to be well on this track even before the existence of the LLM (circa 2022~2024) so that I stopped caring. I don't believe people consider APIO a serious contest as much as it used to. There is no real indication that IOI is heading this way, but if the SC is operating under such a bias and is just pessimistic about the idea of “good batch problems” at large, I think this spells doom.
There are problems that hinge on a single “aha moment,” and problems that require patience and depth of thought. I think this year's problemset (Day 2 at least) is more of the former, and probably this is what AmShZ meant by “solutions do not have enough depth.” What if people just do not believe in the depth of a problem and see it as merely “complicated” if its main ideas do not admit a TL;DR? I have detailed the short term effect above. For the long term effect, I think we should foster mindsets that give people the power to ponder hard problems. I think the importance of these mindsets is only increasing over time—unless you give up and believe in total human destruction (which is unfortunately a fashionable position). So I think there needs to be a shift in this direction.
On SC
One of the main responses from the SC is that there are fewer problem proposals. This is a sort of problem everyone faces and everyone can relate, and I can kind of believe that people generally submit hard tasks or non-batch tasks to IOI.
However, national olympiads around the world basically function by using batch problems of easy-to-medium difficulty. Of course, their standards are lower than IOI’s, but their constraints on proposals are much more restrictive.
I work on our national OI: we are always short of good proposals, and we will never receive anywhere near the number of tasks that IOI receives. However, we still use around 12 tasks each year at a difficulty level that is exactly what IOI is missing. Most of them are batch tasks, too. Then again, my proposal for a medium batch problem was rejected in 2023.
I am not arguing that the SC should use my problems. I am not arguing that national olympiads around the world operate at IOI standards. It is just very hard for me to believe that the SC suffers heavily from such issues when I do not, with a team of around 10 people. The IOI SC is the least imaginable groups of people in the world to make the statement, “we lack attention and resources.”
IOI 2026 was a good contest
The IOI was very nice, and the individual problems were pretty good (except p3). They are not flawless, but there is a valid case that they deserved a place at IOI. I’m not calling out IOI 2026, that would be unfair and I feel the effort. It’s just that I’m a bit concerned about the recent IOI meta and wanted to speak my mind because I’m stupid enough to care.











Recall the rules of seaweed: If two seaweeds never met before, then they cross. From this rule, we can easily find the destination for missing columns: The seaweeds will just go downward. Therefore, the permutation for $$$A_{lo}$$$ and $$$A_{hi}$$$ can both be scaled to a larger one by filling the missing columns and missing rows (which are just identity). Then we can simply return the unit-Monge multiplication of them. 


