المنهج

⁦31⁩ وحدة مرتبطة بمنهج ⁦IOI 2025⁩، مرتبة حسب المتطلبات السابقة.

⁦L1⁩ · الأساسيات

⁦C++⁩ والتعقيد و⁦STL⁩ وأول خطوات في الخوارزميات.

  1. F1

    ⁦C++⁩ الأساسي

    ⁦3⁩ أسابيع

    ⁦I/O⁩، متغيرات، شروط، حلقات، دوال، ⁦arrays⁩، ⁦strings⁩

  2. F2

    Complexity

    أسبوع واحد

    ⁦Big-O⁩، ⁦10^8⁩ عملية/ثانية، قراءة القيود، ⁦overflow⁩

    يتطلب: F1

  3. F3

    STL

    ⁦2⁩ أسابيع

    ⁦vector⁩، ⁦pair⁩، ⁦sort⁩، ⁦set/map⁩، ⁦stack/queue⁩، ⁦priority_queue⁩

    يتطلب: F1

  4. F4

    ⁦Brute force⁩ و⁦Simulation⁩

    أسبوع واحد

    تجربة كل الحالات، ⁦implementation⁩ دقيق

    يتطلب: F1

  5. F5

    رياضيات أساسية

    أسبوع واحد

    القسمة، ⁦gcd⁩، ⁦primes⁩ و⁦sieve⁩، جمع وضرب ⁦modular⁩، ⁦fast exponentiation⁩

    يتطلب: F2

  6. F6

    ⁦Sorting⁩ و⁦Greedy⁩ مدخل

    ⁦2⁩ أسابيع

    الترتيب كأداة، أول ⁦exchange argument⁩

    يتطلب: F3

  7. F7

    Prefix sums

    أسبوع واحد

    ⁦1D⁩ و⁦2D⁩، ⁦difference arrays⁩

    يتطلب: F2

  8. F8

    Binary search

    ⁦2⁩ أسابيع

    على مصفوفة مرتبة وعلى الإجابة

    يتطلب: F6

  9. F9

    Two pointers

    أسبوع واحد

    sliding window

    يتطلب: F7, F8

  10. F10

    Recursion

    ⁦2⁩ أسابيع

    ⁦backtracking⁩، ⁦subsets⁩، ⁦permutations⁩، ⁦bitmask enumeration⁩

    يتطلب: F1

  11. F11

    ⁦DP⁩ مدخل

    أسبوع واحد

    ⁦1D DP⁩، ⁦coins⁩، ⁦LIS O(n²)⁩، ⁦knapsack⁩

    يتطلب: F10

  12. F12

    ⁦Graphs⁩ مدخل

    أسبوع واحد

    تمثيل الـ ⁦graph⁩، ⁦BFS/DFS⁩ على ⁦grids⁩، ⁦connected components⁩

    يتطلب: F3, F10

⁦L2⁩ · الخوارزميات

⁦Greedy⁩ و⁦DP⁩ والرسوم البيانية وهياكل البيانات.

  1. A1

    ⁦Greedy⁩ بالبرهان

    ⁦2⁩ أسابيع

    ⁦exchange argument⁩، ⁦scheduling⁩، متى يفشل الـ ⁦greedy⁩

    يتطلب: F6

  2. A2

    Binary search on answer

    أسبوع واحد

    دالة فحص مع ⁦monotonicity⁩

    يتطلب: F8

  3. A3

    DP II

    ⁦4⁩ أسابيع

    ⁦2D DP⁩، ⁦LCS⁩، ⁦knapsack variants⁩، ⁦interval DP⁩، ⁦bitmask DP⁩

    يتطلب: F11

  4. A4

    Graphs II

    ⁦3⁩ أسابيع

    ⁦Dijkstra⁩، ⁦0-1 BFS⁩، ⁦Bellman-Ford⁩، ⁦Floyd⁩، ⁦topological sort⁩، ⁦DP⁩ على ⁦DAG⁩

    يتطلب: F12

  5. A5

    ⁦DSU⁩ و⁦MST⁩

    أسبوع واحد

    ⁦union-find⁩، ⁦Kruskal⁩، ⁦Prim⁩

    يتطلب: A4

  6. A6

    Trees I

    ⁦3⁩ أسابيع

    ⁦DFS order⁩، ⁦subtree sizes⁩، ⁦tree DP⁩، ⁦diameter⁩، ⁦LCA (binary lifting)⁩

    يتطلب: F12, A3

  7. A7

    Range queries

    ⁦3⁩ أسابيع

    ⁦sparse table⁩، ⁦Fenwick⁩، ⁦segment tree (point update)⁩، ⁦coordinate compression⁩

    يتطلب: F7

  8. A8

    Combinatorics

    أسبوع واحد

    العد، ⁦Pascal⁩، ⁦inclusion–exclusion⁩، ⁦pigeonhole⁩

    يتطلب: F5

  9. A9

    ⁦Ad-hoc⁩ و⁦Constructive⁩

    ⁦2⁩ أسابيع

    ⁦invariants⁩، ⁦parity⁩، بناء الأمثلة، التفكير من الحالات الصغيرة

    يتطلب: All of L1

  10. A10

    أشكال مسائل ⁦IOI⁩

    أسبوع واحد

    ⁦function-signature graders⁩، ⁦interactive⁩، ⁦output-only⁩، ⁦subtasks⁩

    يتطلب: F1

  11. A11

    Stress testing

    أسبوع واحد

    ⁦brute⁩ و⁦generator⁩ ومقارنة، و⁦debugging⁩ منهجي

    يتطلب: F4

⁦L3⁩ · الأولمبياد

مستوى ⁦IOI⁩: مسائل مختلطة وتقنيات متقدمة.

  1. O1

    Segment tree II

    ⁦lazy propagation⁩، ⁦merging⁩، ⁦walk⁩، ⁦persistent segment tree⁩

    يتطلب: A7

  2. O2

    Trees II

    ⁦Euler tour + DS⁩، ⁦small-to-large⁩، ⁦HLD⁩، ⁦centroid decomposition⁩، ⁦virtual tree⁩

    يتطلب: A6, O1

  3. O3

    Advanced DP

    ⁦convex hull trick / Li Chao⁩، ⁦divide & conquer opt⁩، ⁦Knuth⁩، ⁦digit DP⁩، ⁦SOS⁩، ⁦DP + DS⁩

    يتطلب: A3, O1

  4. O4

    Graphs III

    ⁦SCC⁩، ⁦bridges/articulation⁩، ⁦2-SAT⁩، ⁦Euler paths⁩، ⁦bipartite matching⁩، ⁦max flow / min cut⁩

    يتطلب: A4, A5

  5. O5

    Offline techniques

    ⁦sweep line⁩، ⁦sqrt decomposition⁩، ⁦Mo⁩، ⁦parallel binary search⁩، ⁦DSU rollback⁩، ⁦D&C offline⁩

    يتطلب: A7

  6. O6

    ⁦Geometry⁩ بحدود ⁦IOI⁩

    ⁦cross product⁩، ⁦orientation⁩، مساحة مضلع، ⁦point in polygon⁩، ⁦convex hull⁩، أعداد صحيحة فقط

    يتطلب: F5

  7. O7

    ⁦Problem solving⁩ متقدم

    ⁦constructive⁩، ⁦interactive⁩ بحدود أسئلة، ⁦communication tasks⁩، ⁦randomization⁩، ⁦heuristics⁩ للـ ⁦partial scoring⁩

    يتطلب: A9, A10

  8. O8

    استراتيجية ⁦IOI⁩

    قراءة المسائل الثلاث، جمع الـ ⁦subtasks⁩، توزيع ⁦5⁩ ساعات، متى تترك مسألة

    يتطلب: A10

مواد اختيارية

  1. E

    Electives

    ⁦KMP / Z / hashing / suffix array⁩، ⁦modular inverse⁩، ⁦FFT⁩، ⁦matrix exponentiation⁩، ⁦Sprague-Grundy⁩

    يتطلب: After O1–O8