AB
1
What- Problems Lists Created by Dr Mostafa Saad Ibrahim (mostafa.saad.fci@gmail.com)

- These are the private problems lists for supervising my trainees for ICPC / Online Contests / IOI.
- I am releasing for the public in hope making trainees training much more efficient and effective

- Note: If you are a beginner, there is well-organized roadmap for a better start for you [links in end of page]
2
Latest Version
3
Audience- Training for online contests, ICPC or IOI
- Searching for problems with specific categories
- Tired from 'automatic tools for ranking problems by difficulty'
- You train a lot but many problems are not that interesting or have duplicate ideas
4
5
My Relevant
UDEMY courses
Coupons
6
Mastering 4 critical SKILLS using C++ 17
7
Mastering critical SKILLS in Data Structures using C++
8
Mastering 4 critical SKILLS using Python
9
Mastering critical SKILLS for Algorithms in C++
10
Mastering critical SKILLS for Cracking Coding Interviews
11
BackgroundDuring my weekly meetings with the PhD supervisor, I was inspired by launching an online program that I named Supervision. Instead of the coaching style, my major role as a supervisor was to assign problems in the trainee sheet. My goal was to assign problems that match the trainee level and enhance weak skills. As I don’t have to help technically in solving problems, and I don’t believe in the importance of that, I had much more time to supervise ~225 trainees. This gave me a unique opportunity to accumulate a huge amount of statistics and useful information from trainees about the tackled problems (~25k submissions). The program started in 2016 for Egyptians, in 2017 for Arabs and for international students since 2018.
12
13
Outcomes of supervisionBased on the received feedback from my trainees, I used to refine my vision for this program. I ended up with 2 big lists of problems: one for guys training toward IOI and another for ICPC/OnlineContest styles. Specifically 4 critical features:

Problem difficulty level [1-10] per problem is a manual weighted average of the assigned levels from my trainees’ sheets. A common complaint about 'online tools/ways for ranking problems by difficulty' is that they are not accurate. The issue is more severe for OI problems.

Problem importance level: ~ 5 levels (important, very interesting, interesting, good, normal/boring/repeated). Trainees solve a lot of problems that many of them are repeated or boring ideas. To maximize the training outcomes, one should train on unique/interesting ideas much more. Something that most of us can’t figure out easily.

Editorials. Many interesting problems may not have editorials (or have hard to understand editorials). I used to ask trainees to write some summary of how they solved a problem. Circulating these editorials between my trainees made it easy for them to get problems solved.

Submissions info: In Trainees Submissions page, ~25k submissions of my trainees. Per problem info (status, submissions count, times for reading/thinking/coding/debugging, category, subjective level, and a comment. You may use it to know some details about how others performed with the solved problem.
14
15
Problem LevelIn column C, you will find the problem diffculty. I tried to rate a problem relative to CodeForces levels as following:

CF-Div2-A => 1 - 2
CF-Div2-B => 1.5 - 3
CF-Div2-C => 3 - 5.5
CF-Div2-D => 5 - 6.5
CF-Div2-E => 6 - 7.5
CF-Div1-D => 7 - 8.5
CF-Div1-E => 8 - 9.75

As a fact, I did not solve most of the problems. My trainees did for many of them. Based on that, I tried manually to put a level for the problem. Since the middle of 2018, all my trainees found most of the problems of the right level relative to their skills. I can say this column now is accurate to some extent.

To what degree you can trust it? In columns G and H, how many trainees tried to solve the problem and how many ones of them couldn't solve it. The more trainees solved the problem, the more accurate the measure. A problem with empty numbers means no one solved it. I used some online measures to do the early estimation but never assigned to a trainee.
16
Problem Importance- In column F: 5 different values for importance from P5 to P1 ((important, very interesting, interesting, good, ok, normal/boring/repeated). The empty value is unknown or normal.

- Sometimes you find value v. E.g. v2. This is a variance indicator to indicate a kind of variance in difficulty for trainees when solving this problem. You may ignore it

- Important note: let's say someone is doing well in Div1-D problema (e.g. his level is 7.5). He selected a problem of P5 (important) & level 6. He will solve it fast and probably find it a normal problem. On the other side, if someone who is good in Div2-D (e.g. his level is 5.5), he will find the same problem very interesting and a must to solve a problem.
17
Problem Category- In Categories page, you will find a lot of specific categories. Use the [id] to search in the sheets for a specific category
18
How to train- There are 2 lists: General (For ICPC & Online Contests) and another for IOI training

- For each list, there are 2 copies: one for problems sorted by the category (then by level, then by importance). Another sorted by level.

- I used to train my trainees by level. If the trainee's level is 6.5, I sample problems of level 6.25 to 6.75 of P5/P4/P3 ratings.
- A good distribution might be as following:
-- 10% problems below your level: for speed training and confidence
-- 20% problems at your level: for sharpening coding skills
-- 60% problems slightly above your level: for growth
-- 10% problems way above your level: to remind you that the path is still long and to give you more fresh ideas
- I recommend to think up to 60-120 minutes, then check out the editorials. For 10-20% of your problems, you 'may' try up to 3-4 hours
- I am totally ok that they don't get most problems by themselves as long as they can solve them using editorials eventually

- Even if you don't target IOI, many OI problems are worth solving. Many trainees found them much valuable.

- How to know your level?: Investigate your offline solving skills in Codeforces. E.g. If you can solve in 2 hours Div2-E problem, then your level is ~6.5

- 7+ is a hard level in the sheet.
- Note, there is also another view for IOI by contest, where problems are grouped by the contest itself. This should help you figure out the popular topics in this contest.
19
Help improve the content- Found a dead link or a comment on a specific row, right click on row and select comment from the menu
- Wrote an editorial for a relevant problem? Put it on online (e.g. ur Github). Insert comment with link
- If people misused the comment feature, I will have to disable it.
- Have a suggestion? Enhancement? Email me (mostafa.saad.fci@gmail.com)
20
21
Other relevant resources by me
22
Arabic Youtube Channel for competitive programming
23
English text of the channel on github
24
IOI/OJs official solutions/Mini-Editorials in a single repo
25
Training roadmap for newcomers
26
Training Individual Sheet
27
Video: Psychological Concerns in CP
28
History of my Supervision
29
More about me
30
31
Acknowledgement: I would like to thank all the trainees who was part of this program. Without them, such lists will never exist.
32
Top Contributors in the supervision (my assigned problems + their own additions; AC or not)
33
34
#submissions (AC+!AC) - Name
35
981 MohamedNasser
36
844 MagdyHassan
37
811 MariamAlshereef
38
752 StefanDascalescu
39
537 AbdelrahmanMounir
40
494 MohamedBakry
41
459 WilliamLin
42
433 UtsavRajpara
43
428 AhmedSamir
44
388 MoahmedEmad
45
378 LucioCardoso
46
352 AhmedHussnien
47
332 AymanSalah
48
331 MohamedAhmedNabil
49
304 VasilevDaniil
50
299 yazanAlzebak
51
297 MichaelMounirFathi
52
276 AhmedRamadan
53
267 TranLoc
54
267 AhmedGamalAbdelzaher
55
262 NikolaPesic
56
262 ZeyadKhattab
57
252 MohamedAnany
58
251 NathanWang
59
248 AmrAhmedMaghraby
60
247 OmarSaleh
61
243 LtifiMohammed
62
235 EldarUrmanov
63
230 Engy
64
226 NguyenTanbao
65
226 HosamEissa
66
221 Heshamsellat
67
213 ShashankYadav
68
212 AmrMohamedHosny
69
212 AliHamdi
70
204 AmrHassan
71
191 MohamedTahan
72
189 WaleedAbdelhakim
73
189 PranavJangir
74
189 Pongsaphol
75
178 AhmadMadany
76
178 YoussefElSayed
77
176 MosabFathy
78
173 SchwinnSaereesitthipitak
79
160 MahmoudAli
80
158 MiguelMini
81
157 AliMagdeHafez
82
154 AndiQu
83
154 AbdullaAshraf
84
149 AhmedIbrahim
85
146 SaraElkady
86
143 KhalidRamdan
87
138 AbdalrhmanZboon
88
137 ViktorKozhuharov
89
136 HugoGarcia
90
132 Omarkharouba
91
132 Ildar
92
128 ViktorLucic
93
128 KhalidKee
94
128 MinaAmirSadek
95
127 Hosamkamal
96
123 AhmedZaher
97
121 RahulGoswami
98
119 HelikThacker
99
115 OssamaHatem
100
112 WalidSadallah