|
1 | 1 |  |
2 | 2 |
|
3 | | -# Materiały przygotowujące do Olimpiady Informatycznej. |
4 | | - |
5 | | -## Repozytorium ma na celu: |
6 | | -- Przekazanie wiedzy przydatnej w Olimpiadzie Informatycznej dla wszystkich chętnych do nauki. |
7 | | -- Promowanie systematycznego podejścia do treningu i zdrowych nawyków. |
8 | | -- Zapewnienie prostych, przystępnych narzędzi do mierzenia swojego progresu |
9 | | -- Naukę powszechnie stosowanych narzędzi programistycznych poprzez praktykę. |
10 | | - |
11 | | -## Repozytorium zawiera: |
12 | | -- Rozwiązania zadań z Olimpiady Informatycznej, które napisałem, często alternatywne do omówień ze strony OI. |
13 | | -- Skrypty linuksowe przydatne na olimpiadzie z prostym wytłumaczeniem każdej instrukcji. |
14 | | -- Krótkie wykłady na temat korzystania z narzędzi linuksowych przydatnych w pisaniu i testowaniu zadań. |
15 | | -- Automatycznie aktualizujący się licznik rozwiązanych zadań oraz tabelę pokazującą, |
16 | | -które zadania z każdej z edycji OI zostały już rozwiązane z podziałem na etapy olimpiady. |
17 | | -Przydaje się to do mierzenia progresu, oraz do doboru zadań na treningu. |
18 | | -- Odnośniki do innych przydatnych źródeł. |
19 | | - |
20 | | - |
21 | | -## Struktura repozytorium: |
22 | | - |
23 | | -Zawartości katalogów `skrypty`, oraz `materialy` łatwo się domyślić, zachęcam do zapoznania się z nią. |
24 | | -W katalogu `rozwiazania` znajdziesz wszystkie rozwiązania zadań z OI, które zaimplementowałem. |
25 | | -Katalog `rozwiazania/<edycja_oi>/<etap_oi>/[dzień_etapu]/<skrót zadania>` zawiera pliki dotyczące danego zadania z OI. |
26 | | -- `<skrót zadania>.cpp` - moje rozwiązanie zadania, które otrzymuje 100 pkt na testach na sio2/szkopule, |
27 | | - dodatkowo z dopiskiem `_alt` bądź `_oi` pojawiają się czasem rozwiązania alternatywne oraz wprost z omówienia zadania, |
28 | | - w przypadkach gdy rozwiązałem zadanie na 100 punktów na kilka różnych sposobów. |
29 | | -- `<skrót zadania><liczba punktów>.cpp` - Rozwiązania, które dostają mniej niż 100 punktów, takie jak bruty, bądź rozwiązania podgrup. |
30 | | -I dosyć często również pliki: |
31 | | -- `<skrót zadania>g.cpp` - moja generatorka do zadania, której używałem testując rozwiązanie. |
32 | | -- `<skrót zadania>chk.cpp` - moja czekerka w przypadku zadań, w których istnieje więcej niż jedno poprawne rozwiązanie inne niż generowane przez bruta. |
33 | | -- Katalog `virtual_contest/`, zawierający moje skrypty, generatorki, czekerki i różne podejścia do zadania w przypadku, gdy symulowałem ograniczenia czasu i widoczności werdyktów występujące na olimpiadzie, tzn. w przypadku etapów I i II olimpiady, nie mogłem poznać liczby punktów, które dostanie moje zadanie na sprawdzarce szkopuł. Testowałem rozwiązanie lokalnie, i wysyłałem dopiero po przetestowaniu. Rozwiązania zadań z III etapu mogłem wysłać do 10 rozwiązań na szkopuła poznając ich wynik. |
34 | | - |
35 | | -Katalogi `checklista` oraz `.github` zawierają skrypty automatycznie generujące checklisty, nie należy ich modyfikować. |
36 | | -Jeśli coś nie działa, daj mi znać przez [Issue](https://github.com/Kulezi/oi/issues) na GitHubie. |
37 | | - |
38 | | -Przykładowo katalog `rozwiazania/xxv/etap3/dzien1/kom/` będzie zawierał moje rozwiązania do zadania 'Liczby kompletne' z III etapu XXV OI. |
39 | | -Rozwiązania konkretnego zadanie można łatwo znaleźć sprawdzając, z której edycji i etapu olimpiady jest na [Liście zadań OI](https://oi.edu.pl/l/oi_zadania/), |
40 | | -bądź przy pomocy polecenia `grep 'nazwa zadania' -R .` wywołanego z głównego katalogu repozytorium, np. `grep `Trójkąty` -R .`. |
41 | | - |
42 | | -## Jak samemu skorzystać z checklisty: |
43 | | -Sforkuj [szablon](https://github.com/testowyuczen/oi) tego repozytorium [klikając tutaj](https://github.com/testowyuczen/oi/fork), i w zakładce Actions swojego repozytorium kliknij `I understand my workflows, go ahead and enable them` - bez tego checklista nie będzie się aktualizować automatycznie. |
44 | | - |
45 | | -### Automatyczny import rozwiązań z archiwum Szkopuła |
46 | | -Skryptem [oi-fetcher](https://github.com/Matian37/oi-fetcher) można zgrać do repo wszystkie rozwiązania zadań z [Archiwum OI](https://szkopul.edu.pl/task_archive/oi/) Szkopuła (zadania z konkursów niestety trzeba wgrać manualnie). Kudos [@Matian37](https://www.github.com/Matian37). |
47 | | - |
48 | | -### Dodawanie nowych rozwiązań |
49 | | -Po wbiciu jakiegoś zadania, np ['Rycerz' z pierwszego dnia II etapu XXXI OI](https://oi.edu.pl/archive/pl/oi/31/ryc): |
50 | | -- Zapisz rozwiązanie. np. w pliku `rozwiazania/xxxi/etap2/dzien1/ryc/ryc.cpp`. |
51 | | -- Dodaj je do repozytorium wykonując `git add `rozwiazania/xxxi/etap2/dzien1/ryc/ryc.cpp`, (przy pomocy `git status` możesz zobaczyć co już dodałeś w tym commicie). |
52 | | -- Scommituj je np. w ten sposób: `git commit -m "Dodano rozwiązanie zadania 'Rycerz' z XXXI OI"` (jeśli zapomnieliśmy czegoś dodać wystarczy powtórzyć poprzedni krok i użyć `git commit --am`. |
53 | | -- Zaktualizuj repozytorium na GitHub o lokalne zmiany przy pomocy `git push`, ewentualnie `git push -f`. |
54 | | -- Checklista w `README.md` na GitHub zaktualizuje się automatycznie w ciągu kilku minut. |
55 | | -- `git pull` wciągnie aktualną wersję checklisty z GitHuba (bez tego będziesz potrzebował robić `git push -f` przy każdym pushu. |
| 3 | +# Maksowanie OI |
56 | 4 |
|
| 5 | +## Po co mi to repo? |
| 6 | +- Żeby łatwiej przygotować się do Olimpiady Informatycznej. |
| 7 | +- Żeby uczyć się systematycznie i mierzyć postępy. |
| 8 | +- Żeby poznać w praktyce narzędzia programistyczne i linuksowe. |
57 | 9 |
|
| 10 | +## Co tu jest? |
| 11 | +- Automatycznie aktualizująca się checklista pokazująca, które zadania z OI zostały już zrobione. |
| 12 | +- Implementacje wszystkich zadań z OI jakie napisałem. |
| 13 | +- Przydatne skrypty linuksowe z prostym wyjaśnieniem każdej komendy. |
| 14 | +- Krótkie materiały o trickach i narzędziach użytecznych przy pisaniu i testowaniu kodu. |
58 | 15 |
|
59 | | -<!-- AUTO-CHECKLIST --> |
60 | 16 |
|
61 | | -> ⚠️ **UWAGA:** Sekcja poniżej jest generowana automatycznie. |
62 | | -> Nie modyfikuj README poniżej tego napisu. |
63 | | -> ✅ oznacza wykonane zadanie. |
64 | | -> 🤔 oznacza zadanie z mniej niż 100 punktów. |
65 | | -
|
66 | | - |
67 | | -# Podsumowanie |
68 | | - |
69 | | -## Rozwiązane zadania wg etapów |
70 | | - |
71 | | -Etap I | Etap II | Etap III | Łącznie |
72 | | -:---: | :---: | :---: | :---: |
73 | | -43/150 (29%) | 51/157 (32%) | 42/200 (21%) | 136/507 (27%) |
74 | | - |
75 | | -## Rozwiązane zadania wg edycji |
76 | | - |
77 | | -Edycja | Wynik | Edycja | Wynik | Edycja | Wynik | Edycja | Wynik |
78 | | -:--- | ---: | :--- | ---: | :--- | ---: | :--- | ---: |
79 | | -I | 3/10 (30%) | XI | 2/16 (12%) | XXI | 6/17 (35%) | XXXI | 4/17 (24%) |
80 | | -II | 4/14 (29%) | XII | 4/17 (24%) | XXII | 6/17 (35%) | XXXII | 7/18 (39%) |
81 | | -III | 2/13 (15%) | XIII | 5/16 (31%) | XXIII | 3/17 (18%) | | |
82 | | -IV | 3/16 (19%) | XIV | 3/16 (19%) | XXIV | 6/16 (38%) | | |
83 | | -V | 3/16 (19%) | XV | 3/16 (19%) | XXV | 18/18 (100%) | | |
84 | | -VI | 3/15 (20%) | XVI | 1/16 (6%) | XXVI | 11/17 (65%) | | |
85 | | -VII | 3/15 (20%) | XVII | 6/17 (35%) | XXVII | 1/10 (10%) | | |
86 | | -VIII | 2/15 (13%) | XVIII | 5/17 (29%) | XXVIII | 3/17 (18%) | | |
87 | | -IX | 6/15 (40%) | XIX | 4/17 (24%) | XXIX | 1/17 (6%) | | |
88 | | -X | 2/16 (12%) | XX | 5/17 (29%) | XXX | 1/17 (6%) | | |
89 | | - |
90 | | - |
91 | | -## Rozwiązane zadania z I etapu |
92 | | - |
93 | | -Edycja | zad. 1 | zad. 2 | zad. 3 | zad. 4 | zad. 5 | zad. 6 |
94 | | -:--- | ---: | ---: | ---: | ---: | ---: | ---: |
95 | | -I | pio ✅ | tro ✅ | | — | — | — |
96 | | -II | jed ✅ | pal ✅ | | | — | — |
97 | | -III | gon ✅ | | | | — | — |
98 | | -IV | | | | | — | — |
99 | | -V | sum ✅ | wie ✅ | | | — | — |
100 | | -VI | gra ✅ | | | | — | — |
101 | | -VII | bro ✅ | | | | — | — |
102 | | -VIII | ant ✅ | | | | — | — |
103 | | -IX | kom ✅ | kol ✅ | | | — | — |
104 | | -X | cze ✅ | | | | | — |
105 | | -XI | zaw ✅ | gra ✅ | | | | — |
106 | | -XII | | | | | | — |
107 | | -XIII | kra ✅ | okr ✅ | | | | — |
108 | | -XIV | | | | | | — |
109 | | -XV | pla ✅ | | | | | — |
110 | | -XVI | | | | | | — |
111 | | -XVII | kor ✅ | tes ✅ | | | | — |
112 | | -XVIII | liz ✅ | | | | | — |
113 | | -XIX | odl ✅ | | | | | — |
114 | | -XX | | | | | | — |
115 | | -XXI | kur ✅ | | | | | — |
116 | | -XXII | kin ✅ | | | | | — |
117 | | -XXIII | | | | | | — |
118 | | -XXIV | fla ✅ | | | | | — |
119 | | -XXV | pow ✅ | roz ✅ | pra ✅ | pla ✅ | pio ✅ | — |
120 | | -XXVI | rob ✅ | klu ✅ | par ✅ | nie ✅ | pod ✅ | — |
121 | | -XXVII | | | | | | — |
122 | | -XXVIII | gan ✅ | | | | | — |
123 | | -XXIX | | | | | | — |
124 | | -XXX | kol ✅ | | | | | — |
125 | | -XXXI | cza ✅ | | | | | — |
126 | | -XXXII | bit ✅ | wal ✅ | spr ✅ | zam ✅ | usu ✅ | kas 🤔 |
127 | | - |
128 | | - |
129 | | -## Rozwiązane zadania z II etapu |
130 | | - |
131 | | -Edycja | zad. próbne | Dzień 1 - zad. 1 | Dzień 1 - zad. 2 | Dzień 2 - zad. 1 | Dzień 2 - zad. 2 |
132 | | -:--- | ---: | ---: | ---: | ---: | ---: |
133 | | -I | | prz ✅ | — | | — |
134 | | -II | | tro ✅ | | | |
135 | | -III | | | — | haz ✅ | |
136 | | -IV | | | | | |
137 | | -V | | row ✅ | | | |
138 | | -VI | | lun ✅ | | | |
139 | | -VII | | | | | |
140 | | -VIII | | | | | |
141 | | -IX | izo ✅ | dzi ✅ | | | |
142 | | -X | | aut ✅ | | | |
143 | | -XI | | | | | |
144 | | -XII | | ban ✅ | | kos ✅ | |
145 | | -XIII | | naj ✅ | | | |
146 | | -XIV | | ska ✅ | | tet ✅ | |
147 | | -XV | | | | | |
148 | | -XVI | | | | arc ✅ | |
149 | | -XVII | | cho ✅ | klo ✅ | | |
150 | | -XVIII | | roz ✅ | | | |
151 | | -XIX | | sza ✅ | | roz ✅ | okr ✅ |
152 | | -XX | | luk ✅ | | mor ✅ | |
153 | | -XXI | | prz ✅ | | pta ✅ | |
154 | | -XXII | | pus ✅ | | trz ✅ | kur ✅ |
155 | | -XXIII | | dro ✅ | zaj ✅ | | |
156 | | -XXIV | | sum ✅ | | kon ✅ | zam ✅ |
157 | | -XXV | prz ✅ | dro ✅ | kon ✅ | tom ✅ | tel ✅ |
158 | | -XXVI | roz ✅ | gwi ✅ | kol ✅ | cyk ✅ | osi ✅ |
159 | | -XXVII | | czw ✅ | | | |
160 | | -XXVIII | | ple ✅ | | pla ✅ | |
161 | | -XXIX | | | | kon ✅ | |
162 | | -XXX | | | | | |
163 | | -XXXI | | lic ✅ | ryc ✅ | poj ✅ | |
164 | | -XXXII | sss ✅ | drz ✅ | | | |
165 | | - |
166 | | - |
167 | | -## Rozwiązane zadania z III etapu |
168 | | - |
169 | | -Edycja | Dzień próbny, zad. 1 | Dzień próbny, zad. 2 | Dzień 1 - zad. 1 | Dzień 1 - zad. 2 | Dzień 1 - zad. 3 | Dzień 2 - zad. 1 | Dzień 2 - zad. 2 | Dzień 2 - zad. 3 |
170 | | -:--- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
171 | | -I | | — | | | — | | — | — |
172 | | -II | | — | | | — | sze ✅ | | — |
173 | | -III | | — | | | — | | | — |
174 | | -IV | | — | kaj ✅ | tro ✅ | | rez ✅ | | — |
175 | | -V | | — | | | | | | |
176 | | -VI | | — | mag ✅ | | — | | | |
177 | | -VII | | — | | | — | pow ✅ | age ✅ | |
178 | | -VIII | | — | | | — | kop ✅ | | |
179 | | -IX | min ✅ | — | | | — | szy ✅ | | |
180 | | -X | | — | | | — | | | |
181 | | -XI | | — | | | | | | — |
182 | | -XII | dzi ✅ | — | | | | aut ✅ | | |
183 | | -XIII | | — | | | — | pal ✅ | zos ✅ | |
184 | | -XIV | | — | | | — | klo ✅ | | |
185 | | -XV | | — | kup ✅ | | | sta ✅ | | — |
186 | | -XVI | | — | | | | | | — |
187 | | -XVII | | — | zab ✅ | | | pil ✅ | | |
188 | | -XVIII | | — | imp ✅ | | | pat ✅ | met ✅ | |
189 | | -XIX | | — | | | | | | |
190 | | -XX | | — | lan ✅ | baj ✅ | | gdz ✅ | | |
191 | | -XXI | far ✅ | — | tur ✅ | | | pan ✅ | | |
192 | | -XXII | | — | wil ✅ | | | kol ✅ | | |
193 | | -XXIII | | — | zyw ✅ | | | | | |
194 | | -XXIV | piz ✅ | — | zap ✅ | | | | | — |
195 | | -XXV | trz ✅ | dwa ✅ | tur ✅ | kom ✅ | ogr ✅ | ddl ✅ | tak ✅ | wie ✅ |
196 | | -XXVI | | — | | | | dlu ✅ | | |
197 | | -XXVII | — | — | — | — | — | — | — | — |
198 | | -XXVIII | | — | | | | | | |
199 | | -XXIX | | | | | | | | |
200 | | -XXX | | — | | | | | | |
201 | | -XXXI | | — | | | | | | |
| 17 | +<details> |
| 18 | +<summary>Gdzie są jakie pliki?</summary> |
| 19 | + |
| 20 | +📘 Przykład: |
| 21 | +`rozwiazania/xxv/etap3/dzien1/kom/` – rozwiązania do zadania **„Liczby kompletne”** z III etapu XXV OI. |
| 22 | + |
| 23 | + |
| 24 | +Katalog `rozwiazania/` zawiera wszystkie zadania z OI, które zaimplementowałem. |
| 25 | +Struktura wygląda tak: |
| 26 | +`rozwiazania/<edycja_oi>/<etap_oi>/[dzień_etapu]/<skrót_zadania>/` |
| 27 | + |
| 28 | +- `<skrót>.cpp` – moje rozwiązanie (100 pkt na Szkopule lub SIO2). |
| 29 | + Dodatki `_alt` lub `_oi` to alternatywne rozwiązania. |
| 30 | +- `<skrót><liczba>.cpp` – rozwiązania z mniejszą liczbą punktów (np. bruty lub podgrupy). |
| 31 | +- `<skrót>g.cpp` – generatorka testów. |
| 32 | +- `<skrót>chk.cpp` – checkerka (jeśli zadanie ma kilka poprawnych odpowiedzi). |
| 33 | + |
| 34 | +Katalog `virtual_contest/` zawiera moje podejścia z symulacji zawodów (ograniczenia czasu i widoczności wyników jak na prawdziwej OI). |
| 35 | + |
| 36 | +Katalogi `checklista` oraz `.github` odpowiadają za automatyczne generowanie checklisty — **nie modyfikuj ich ręcznie.** |
| 37 | + |
| 38 | +Jeśli coś nie działa, daj mi znać przez [Issue](https://github.com/Kulezi/oi/issues). |
| 39 | +Chcesz znaleźć konkretne zadanie? |
| 40 | +Zajrzyj na [Listę zadań OI](https://oi.edu.pl/l/oi_zadania/) |
| 41 | +albo użyj: |
| 42 | +```bash |
| 43 | +grep 'nazwa_zadania' -R . |
| 44 | +``` |
| 45 | + |
| 46 | +</details> |
| 47 | + |
| 48 | +<details> |
| 49 | +<summary>Jak mam tego używać?</summary> |
| 50 | + |
| 51 | +1. Sforkuj [szablon repozytorium](https://github.com/testowyuczen/oi/fork). |
| 52 | +2. W zakładce **Actions** kliknij |
| 53 | + `I understand my workflows, go ahead and enable them` |
| 54 | + — bez tego checklista nie będzie się aktualizować automatycznie. |
| 55 | + |
| 56 | +### Automatyczny import zadań ze Szkopuła |
| 57 | +Skrypt [oi-fetcher](https://github.com/Matian37/oi-fetcher) pozwala zgrać wszystkie rozwiązania z [Archiwum OI](https://szkopul.edu.pl/task_archive/oi/). |
| 58 | +Zadania z konkursów trzeba dodać ręcznie. |
| 59 | +Kudos dla [@Matian37](https://github.com/Matian37) za narzędzie. |
| 60 | + |
| 61 | +### Dodawanie nowych rozwiązań |
| 62 | +Załóżmy, że zrobiłeś zadanie ['Rycerz' z II etapu XXXI OI](https://oi.edu.pl/archive/pl/oi/31/ryc): |
| 63 | + |
| 64 | +```bash |
| 65 | +git add rozwiazania/xxxi/etap2/dzien1/ryc/ryc.cpp |
| 66 | +git commit -m "Dodano rozwiązanie zadania 'Rycerz' z XXXI OI" |
| 67 | +git push |
| 68 | +``` |
| 69 | + |
| 70 | +Po kilku minutach checklista na GitHubie zaktualizuje się automatycznie. |
| 71 | +Jeśli chcesz pobrać nową wersję checklisty lokalnie: |
| 72 | +```bash |
| 73 | +git pull |
| 74 | +``` |
| 75 | +</details> |
| 76 | +<!-- AUTO-CHECKLIST --> |
0 commit comments