The problem in brief
This 30-point "scientific task" of the 2024 Hungarian AI Olympiad final asks you to diagnose the weaknesses of a chatbot from five real exchanges about Formula 1 (2024 season). A fan asks ChatGPT for the last race winner, for a summary of a Wikipedia page given by link, for the earliest race at which Max Verstappen could clinch the title, for five Python programs computing championship totals, and finally to find a sentence hidden in a long pasted text. Each time the answer is wrong in an instructive way, and you must explain why, using what you know about how large language models are built.
A caveat before reading. The five ChatGPT answers were shared as screenshots on Google Drive, and these links now return "404 not found". The questions that only ask for the mechanism (most of the paper) are fully answered below; the parts that require reading the exact screenshot (the details of the calculation in Q3 and the list of correct programs in Q4) are answered with the method you would apply, not with the final list.
How you are scored
Points are attached to each sub-question, 30 in total: Q1 8 points (1 + 2 + 5), Q2 5 points (3 + 2), Q3 5 points (3 + 2), Q4 6 points (2 + 4), Q5 6 points (2 + 4). Grading is by the jury, so what earns the points is a precise mechanism ("training data stops at a cutoff date"), not a vague one ("ChatGPT is not perfect").
The key idea
Almost every failure in this task comes from one sentence: a language model is a function that predicts the next token from the text in its context window, using parameters frozen at the end of training. Three consequences follow, and each question tests one of them.
- Frozen knowledge. Training data stops at a knowledge cutoff. Anything after it (the latest race) simply does not exist for the model, unless a tool such as web search injects it into the context.
- Plausibility, not truth. The training objective rewards text that looks like a likely continuation. When the right information is missing, the most likely continuation is still a fluent, confident answer: a hallucination. The model has no built-in signal that says "I do not know".
- Limited, uneven reading. The model only "sees" its context window, which has a maximum length, and attention over very long inputs is uneven: information in the middle of a long text is retrieved worse than information at the beginning or the end.
Arithmetic and code are a fourth, related weakness: the model writes the steps of a calculation token by token, it does not execute them, so it can produce a formula that looks rigorous but is wrong, or code that looks correct and is not.
Question by question
Q1. The last race winner (8 points)
Why can it not answer? (1 point) The race took place after the model's knowledge cutoff. The model's parameters were fixed when training ended, so it has never seen the result. In 2024 the free ChatGPT also had no live web access, so nothing could bring the result into its context.
How can John get up-to-date information? (2 points) Either by bringing the information to the model or by not using the model as a source:
- use a version with web search / browsing (a retrieval tool fetches current pages and places them in the context, then the model summarises them: retrieval-augmented generation);
- paste the text of an official report into the prompt himself;
- or simply use primary sources: the official Formula 1 website or app, the FIA results, a sports news site.
Five questions it certainly cannot answer (5 points). A good list covers different reasons, which is what makes each item worth its point:
- "Who won yesterday's Grand Prix?" (after the cutoff);
- "What is the weather in Budapest right now?" (real-time data);
- "What did I eat for breakfast this morning?" (private information never in the training data);
- "Who will win the 2030 world championship?" (the future is unknowable, any answer is a guess);
- "What number am I thinking of?" or "What is written on the paper on my desk?" (information that exists nowhere in text).
Questions like "how many r's are in strawberry" are also classic failures, but they are a different mechanism (tokenisation) and the model can sometimes get them right, so they are weaker examples of "definitely cannot".
Q2. Summarising a page from its link (5 points)
Explanation of the answer (3 points). The model did not read the page; it received only the text of the URL. A Wikipedia URL contains the race's name and year (for example ".../2024_..._Grand_Prix"), which is enough for the model to generate what a summary of such a race usually looks like: drivers, teams, a plausible winner. It picked a real driver (Pierre Gasly) because that name fits the context statistically, not because it is true. This is a textbook hallucination: fluent, specific, confident, and false. Two factors make it worse: the race is after the cutoff, so there is no memorised fact to fall back on, and models are trained to be helpful, which pushes them to produce an answer instead of admitting they cannot open links.
Did it really open the page? (2 points) No. Evidence: (i) the version used had no browsing tool, so it could not make an HTTP request; (ii) the page plainly states that Max Verstappen won, so a model that had read it would not have named Gasly; (iii) the answer contains nothing that is not guessable from the URL alone. A quick experiment confirms it: give the model a URL with a made-up race name and it will "summarise" a race that never existed.
Q3. When can Verstappen clinch the title? (5 points)
What the correct computation looks like (3 points). The question has a clean worst-case answer. Let be Verstappen's current lead over his closest rival and let be the maximum points available in race weekend (in 2024: 25 for a win plus 1 for the fastest lap, plus 8 more on a sprint weekend). In the most favourable scenario Verstappen takes the maximum and the rival scores nothing, so after more weekends the lead is , while the rival can still collect at most . The title is mathematically decided at the first where
With identical weekends of value this gives : each race won both increases the lead and removes points from the pool, which is why the lead and the remaining pool cross roughly halfway through the season.

Helping John read ChatGPT's answer means checking it against this formula: which lead did it use, which points per race (forgetting the fastest-lap point and the sprints is a frequent mistake), and did it account for the fact that the remaining pool shrinks as races are run? The screenshot is no longer available, so we cannot reproduce its exact numbers; solution.py shows the correct calculation and contrasts it with a typical flawed formula ("(points available minus lead) divided by 25"), which overestimates the answer almost twofold.
Why is the formalism wrong? (2 points) The model imitates the shape of a mathematical argument (variables, an equation, a confident final number) without carrying out logical reasoning. It generates each step as the most plausible next text, so a wrong modelling choice early on (for example dividing the remaining points by the points per win, which ignores that the rival also scores and that the leader's own points also grow) is never checked afterwards. Arithmetic done "in text" adds errors on top. Remedies: ask it to reason step by step and verify each step, or better, ask it to write code and run the code yourself.
Q4. Five Python programs for the standings (6 points)
What you notice when you test them (2 points). Several programs that all look reasonable give different results on the same data, and some do not even run. This is the key observation: plausible-looking code is not correct code, and the only way to know is to execute it on a small example whose answer you computed by hand. Typical slips in this kind of task: the gap is computed to the previous driver instead of to the leader, the leader's total is taken before summing all races, drivers are mixed up after sorting, or a test database is generated with points that the F1 scoring system cannot produce.
Which programs are correct? (4 points) This sub-question can only be answered from the screenshot of the five programs, which is no longer online, so we do not give a list. The method that earns the points is the one implemented in solution.py: write a three-line reference
totals = {d: sum(p) for d, p in points.items()}
best = max(totals.values())
result = {d: (t, best - t) for d, t in totals.items()}
then run each candidate on a few hundred random small databases and keep exactly those that always agree with the reference. On our test harness, a candidate with the "gap to the previous driver" bug fails immediately.
Q5. The hidden sentence (6 points)
Why it failed (2 points). Two mechanisms, and a good answer names both. First, the context window is finite: a long pasted text may be truncated, and if the sentence fell in the cut part the model never saw it. Second, even inside the window, long-context retrieval is uneven: models are best at using information at the start and the end of the input and noticeably worse in the middle (the "lost in the middle" effect, measured on needle-in-a-haystack tests). A third, subtler reason fits the screenshot's question "who is the best driver?": the model's prior from training (Verstappen dominated in 2023 and 2024) competes with a single unsupported sentence in the input, and a lone claim buried in a factual text looks like noise to it.
Where and how to hide the text (4 points). If the goal is that the model finds it:
- put the sentence at the very beginning or the very end of the text, where retrieval is best;
- make it stand out from its surroundings: its own line or paragraph, a marker such as "Important note:", or a format different from the rest;
- keep the whole input well below the context limit (or paste only the relevant part), so nothing is truncated;
- ask a question that points to it ("According to the text, who is described as the best driver?"), which tells the model to rely on the document rather than on its prior.
If instead John wants the sentence to stay hidden from a human but still be read by the model, the same principles apply in reverse: it must still sit where the model looks, which is exactly how prompt injection attacks place their instructions. It is worth mentioning, because it shows you understand that position and salience control what the model attends to.
Results
| question | points | status of our answer |
|---|---|---|
| Q1 cutoff, how to get fresh news, 5 impossible questions | 8 | complete |
| Q2 hallucination, the page was not opened | 5 | complete |
| Q3 explain the calculation (3) and why it is wrong (2) | 5 | mechanism and correct method complete; exact numbers of the screenshot unavailable |
| Q4 what you notice (2), which codes are correct (4) | 6 | method complete; the list of correct codes needs the deleted screenshot |
| Q5 why it failed (2), where to place the text (4) | 6 | complete |
About 23 of the 30 points rest only on the mechanisms and are fully answered here; the remaining 7 depend on screenshots that are no longer online.
What to remember
- An LLM predicts plausible text from its context with frozen parameters. Cutoff, hallucinations and context limits all follow from that one sentence; name the mechanism, not just the symptom.
- A URL is not a document. Without a browsing tool the model sees only the characters of the link and will happily invent the page.
- Never trust generated maths or code without executing it. Write a tiny reference, compare on random tests: it is fast and decisive.
- Position matters in long contexts. Put what must be used at the start or end, keep inputs short, and ask questions that point to the source.
- Tools fix knowledge gaps, not reasoning gaps. Search brings fresh facts into the context; checking the logic is still your job.