A | B | |
---|---|---|
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 | Background | During 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 supervision | Based 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 Level | In 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 |