Etap okręgowy XIV Olimpiady informatycznej - relacja

Relacjo-reportaż z przebiegu

Ost. modyfikacja: piątek, 16 lutego 2007

Relacja ma charakter popularnonaukowy. Osoby rozumiejące rolę algorytmów i innych takich, które nie lubią czytać tego, co już wiedzą, mogą rozpocząć czytanie od trzeciego bądź czwartego akapitu.

Informatyka jest jedną z najbardziej wszechstronnych dziedzin wiedzy. Do tego ogromnego worka ludzie wrzucają niemal wszystko, co wiąże się z komputerami, od obsługi aplikacji komputerowych, poprzez zgłębianie tajników działania systemów operacyjnych, programowanie i na algorytmice kończąc. Ostatnia z wymienionych jest wręcz nauką ścisłą o solidnych podstawach matematycznych, sama będąca dodatkowo podstawą dla wszystkiego, co o komputerach da się napisać. Tymi maszynami sterują właśnie algorytmy, a mówiąc bardziej ogólnikowo, szczegółowe przepisy dotyczące wykonywania konkretnych czynności oraz przetwarzania danych. Kiedy rozmawiasz przez GG, to właśnie one pozwalają znaleźć najkrótszą drogę w sieci do komputera drugiego rozmówcy. Podczas słuchania muzyki inny algorytm nieustannie rozkodowuje format MP3 i przetwarza go na dźwięk.

Algorytmika ma wiele wspólnego z matematyką. Na dobrą sprawę jej podstawy powstały jeszcze w czasach, gdy nie istniały komputery. Dla każdego algorytmu można przeprowadzić logiczny dowód, dlaczego on w ogóle działa i generuje poprawny wynik. Dla każdego z nich można również ustalić tzw. złożoność obliczeniową. Jest to pewna matematyczna funkcja określająca wzrost czasu potrzebnego mu na zakończenie zadania w zależności od wielkości danych. To właśnie ten czynnik niejednokrotnie decyduje, dlaczego niektóre programy działają szybciej od innych na identycznym sprzęcie. Dla algorytmów o kiepskiej złożoności nawet kosmicznie szybki komputer niewiele zmieni, ponieważ całe te nakłady mocy pójdą na coraz szybciej rosnącą liczbę potrzebnych obliczeń. Właśnie dlatego poszukiwanie wydajnych algorytmów jest takie istotne. Ta umiejętność badana jest właśnie w ogólnopolskiej Olimpiadzie informatycznej, w której mogą startować uczniowie szkół średnich.

Olimpiada składa się z trzech etapów. Na każdym z nich uczestnikom prezentowane jest kilka zadań ilustrujących pod pewną historyjką jakiś problem algorytmiczny. Zadaniem biorących udział jest napisanie programu komputerowego, który za pomocą odpowiedniego algorytmu potrafi go rozwiązać. Wszystkie rozwiązania są następnie sprawdzane na dziesiątkach zestawów danych testowych. Na każdy z nich nałożony jest pewien niewielki (rzędu maksymalnie kilku sekund) limit czasowy, w którym każdy program musi się zmieścić, aby otrzymać punkty (oczywiście musi też dawać poprawną odpowiedź). Łącznie za każde zadanie jest do uzyskania 100 punktów i, jak nietrudno zauważyć, ten wynik osiągają tylko programy z najszybszymi algorytmami.

Pierwszy etap ma charakter korespondencyjny. Na wykonanie pięciu zadań jest miesiąc czasu, przy czym pracuje się w domach i rozwiązania wysyła przez Internet. Zarejestrowałem się w konkursie i zacząłem trochę nad każdym z nich myśleć. Program rozwiązujący zadanie Biura napisałem na tydzień przed zamknięciem konkursu 20 listopada 2006. Pomysł był dobry, jednak mój program wymagał bardzo dużo pamięci, co kończyło się przekroczeniem narzuconych limitów przy większych testach. Do reszty siadłem... 19 listopada i kodując non-stop przez 20 godzin do samego południa ostatniego dnia, napisałem jeszcze Zapytania, Osie symetrii oraz Drzewa. Zobaczywszy 4 grudnia wstępne wyniki testów: 102, myślałem, że się nie załapię w życiu na próg przyjęć i zapomniałem o wszystkim. W połowie grudnia dostałem od przyjaciółki SMS-a z gratulacjami o przejściu do drugiego etapu i szybko okazało się, że to prawda – próg wynosił 100 punktów (głupie szczęście jednak na coś się czasem przydaje). Rozpoczęło się przygotowywanie mające na celu ostateczne zapamiętanie różnych przydatnych algorytmów oraz technik, a także poćwiczenie.

Rzeszów

Drugi etap zaczynał się dnia 6 lutego, a był to wtorek, jednak zameldowanie się na miejscu było konieczne już dzień wcześniej. Ode mnie ze szkoły dostał się jeszcze jeden chłopak, Adam, i to na wysokiej pozycji. Zostaliśmy przydzieleni do okręgu rzeszowskiego. Przed południem wpadłem jeszcze do szkoły wyciągnąć delegacje, co nawiasem mówiąc, powinno być zrobione przed weekendem, tyle że brakowało nam do pełni szczęścia dyrektora. Bus ruszał o 16.45, mknąc ciemną nocą ku stolicy Podkarpacia, Rzeszowowi. Wysiedliśmy na parkingu w centrum i wśród porywów wiatru rozpoczęliśmy ponad półgodzinny marsz do domu rekolekcyjnego, gdzie mieściła się kwatera. Na miejscu wpisaliśmy się na listę obecności, otrzymaliśmy regulamin i załadowaliśmy się do jednego z sześcioosobowych pokojów. Adam i jeszcze dwójka znajdujących się tam osób dosyć solidnie przygotowywała się do zawodów – brali udział w TopCoderze, robili różne zadanka i sądziłem, że przynajmniej jednemu uda się do finału dostać. Był też jeden całkiem oryginalny, ale fajny chłop z Jasła, który w momencie przyjazdu nie wiedział, co to jest DFS i BFS :). Zwaliśmy go Dutem albo Guaraną. Ostatni z mieszkańców pokoju nr 9, jak sam twierdził, na OI dostał się raczej przez przypadek i na wiele nie liczył. Pośrodku tego byłem ja, również z pewną cichą nadzieją, żeby jakoś do finału się wślizgnąć. Tego dnia mieliśmy kolację, podczas której poznaliśmy siostrę Bernadettę, po której program przewidywał krótką pogawędkę w kaplicy w wykonaniu księdza opiekującego się domem. Czekając na jej rozpoczęcie w prowizorycznej recepcji naszą uwagę przykuł taki oto widok: stolik, nad nim wielki obraz świętego, na stoliku krzyż, świeca, Pismo Święte, różaniec i pośrodku włączony laptop. Wpatrujemy się w to, zastanawiając się, cóż ten symbol może oznaczać i nagle jeden chłopak stwierdza: „Komuś się chyba kontemplacja z kompilacją pomyliła...”.

OI to prawdopodobnie najbardziej homoseksualna olimpiada w Polsce. Do techniki ciągnie przede wszystkim facetów, co znalazło odzwierciedlenie w składzie przybyłych na etap okręgowy. Na około sześćdziesiąt osób była wśród nas tylko jedna dziewczyna, z osobnym zakwaterowaniem. Nic dziwnego, że wzbudzała wśród męskiej większości pewne zainteresowanie.

Noc minęła bez większych niespodzianek. Nad Rzeszowem nastał świt i zerwaliśmy się z pewnymi oporami o 6.41 na dźwięk komórkowego budzika. Za pół godziny czekało nas jedzenie, trzeba więc było szybko uwinąć się z czynnościami pielęgnacyjnymi w łazience oraz znaleźć algorytm ogarnięcia bałaganu na własnym łóżku, który wziął się tam nie wiadomo, skąd. Śniadaniem okazała się być na dobrą sprawę kolacja z dnia poprzedniego, a przynajmniej takie człowiek odnosił wrażenie, spoglądając na menu. Jednak do smaku nie mam w zasadzie zastrzeżeń. Było to zjadliwe i nawet wzbudzało pozytywne doznania smakowe, o czym świadczy osiem zjedzonych przeze mnie kromek. Pożywieni, z zatankowanym paliwem, wzięliśmy jakieś plecaki z najpotrzebniejszymi rzeczami i udaliśmy się na przystanek MPK. Organizatorzy zafundowali nam dziesięć miłych minut podziwiania w blaskach słońca pędzących samochodzów, po których następowała dwuminutowa przejażdżka na kolejny przystanek. Nie rozumiem, jaki jest sens takiej podróży, skoro na piechotę można tam było dotrzeć szybciej i z większą korzyścią dla zdrowia oraz zmysłu orientacji przestrzennej. Po minięciu kilku zabudowań mieszkalnych naszym oczom ukazał się biało-niebieski budynek Wyższej Szkoły Informatyki i Zarządzania z siedzibą w Rzeszowie, która udostępniła swe pomieszczenia komitetowi olimpijskiemu.W holu panował harmider, którego sprawcami byliśmy my. Oczekiwaliśmy na wpuszczenie na salę egzaminacyjną, która tym razem miała posłużyć nieco wdzięczniejszemu dla rodzaju ludzkiego zadaniu, czyli uroczystości rozpoczęcia zawodów. Po obowiązkowej procedurze sprawdzania tożsamości i wydawania identyfikatorów zasiedliśmy w ławkach, a mowę zaczął prorektor uczelni. Słowem wstępu opowiedział o roli informatyki we współczesnym świecie oraz pogratulował nam dotarcia do drugiego etapu. Dalsza część należała już do bardziej kompetentnych w sferze OI osób, które dokładnie przedstawiły przebieg zawodów oraz zmiany dla uczestników poprzednich edycji. Siedząc z tyłu z Dutem i jeszcze jednym chłopakiem z mojego pokoju, tłumaczyłem mu pokrótce szeptem, czym jest STL i dlaczego nauczyłem się go na trzy dni przed zawodami :). Śmiem przypuszczać, że mi się udało, ponieważ przy kolejnych zadaniach starał się przetestować jedną ze struktur danych opisanych w tym pakiecie.

Laboratorium, w którym robiliśmy zadania.

Na 9.45 przewidziane było testowanie komputerów. Zaprowadzono nas do laboratorium komputerowego, gdzie każdy musiał odnaleźć swoje stanowisko. Złożyliśmy w odpowiednim miejscu prywatne rzeczy i odpaliliśmy maszyny. Czterdzieści pięć minut było na zapoznanie się z oprogramowaniem, sprawdzenie, czy wszystko jest tak, jak powinno i ogólnie czy nie ma żadnych problemów technicznych. Pecetów w sali był nadmiar, więc ewentualny problem mógł być rozwiązany poprzez zwyczajną przesiadkę na inną maszynę. Wybrałem kodowanie zadań w systemie Linux, więc na komputerze odpaliłem odpowiednio przygotowane Ubuntu 6.10. Odnalazłem niezbędne mi programy, skompilowałem jakieś proste kody i w zasadzie to wszystko, bo co więcej można robić? Wyszliśmy do przedsionka na przerwę oraz drugie śniadanie (na stoliku przy wejściu rozłożone były napoje, bułki oraz ciastka). Przedsmak tego, co nas czeka, miał miejsce o godzinie 11.00, gdy rozpoczynała się sesja próbna. Było to jedno zadanie niewliczane do końcowej punktacji. Robi się je, aby zapoznać się z procedurą przesyłania rozwiązań, warunkami egzaminacyjnymi obowiązującymi w czasie olimpiady oraz innymi procedurami. Zawodnikom nie wolno kontaktować się ze sobą nawzajem oraz ze światem w żaden sposób. Wszystkie elektroniczne urządzenia, w szczególności telefony komórkowe, muszą być wyłączone oraz złożone w wydzielonym miejscu. Niezbędne do projektowania programu kartki dostajemy od komitetu. Podczas pierwszej godziny zabronione jest opuszczanie sali oraz swoich stanowisk. Jest to jednocześnie czas, w którym na specjalnym formularzu można pisemnie zadać jury pytanie dotyczące treści zadania, na które otrzymuje się jedną z trzech odpowiedzi: TAK, NIE lub BEZ ODPOWIEDZI. W praktyce różnie to działa, bo wiele osób zadawało pytania dotyczące właśnie treści, a wracały im karteczki z zaznaczonym trzecim polem. Każdy zawodnik na swoim komputerze miał wgrany zestaw przykładowych testów do każdego z zadań oraz prosty program umożliwiający sprawdzenie wyników i podliczanie czasu. Nie jest to ta sama aplikacja, która jest używana do ostatecznej oceny, ale pozwala szybko zorientować się w poprawności oraz wydajności implementacji. Aby zgłosić rozwiązanie, należało wejść na odpowiednią imienną stronę internetową z formularzem do wyboru pliku zadania. Kod źródłowy przesyłany był jakimiś tajemnymi kanałami na serwery w Warszawie, gdzie oficjalna sprawdzaczka testowała go dla przykładowych danych i podawała raport. Zadania można zgłaszać więcej, niż raz – najnowsze zgłoszenie dezaktualizuje poprzednie. Mieliśmy także sieciowy panel do robienia kopii zapasowych oraz drukowania różnych plików (limit na użytkownika wynosił 10). W praktyce używało się tego do drukowania kodów własnych programów, by je później przeanalizować bądź pochwalić się przed znajomymi :).

Zadanie z dnia próbnego należało do gatunku prostszych. Ot, wczytywało się mapę wysokości terenu i trzeba było obliczyć liczbę znajdujących się na niej grzbietów górskich i dolin. Wymyśliłem algorytm o dobrej złożoności, lecz dość skomplikowany w implementacji, co mnie zabiło. Wpadłem później jeszcze na rozwiązanie wzorcowe, ale już nie było czasu, by je zakodować. Rezultat to 0 punktów na 100. Sesja próbna jest o dwie godziny krótsza od normalnej. Po zawodach w barze studenckim zaserwowano całkiem smaczny obiad i nadszedł moment na omówienie zadania. Zajęło to pięć minut z czasu wyliczonego na godzinę, następnie rozdano nam raporty wstępnego sprawdzania z wynikami punktowymi za dany dzień. Kolejne plany przewidywały zwiedzanie uczelni, ale wiele osób nie było tym zainteresowaych. Poszła plotka, że następnego dnia ma pojawić się geometria 3D stanowiąca czarną magię i na gwałt poszukiwaliśmy jakiejś kawiarenki internetowej, aby znaleźć potrzebne materiały. Skończyło się na komputerze w bibliotece miejskiej, ale podobno nieprzebrane zasoby światowej sieci nie zawierały tego, co pragnęliśmy. Zapadł już zmrok i oświetleni światłem ulicznych lamp wracaliśmy na kwaterę. Nie był to jeszcze koniec dnia. Po kolacji nasze bilety MPK poszły z powrotem w ruch, ponieważ organizatorzy zafundowali nam wycieczkę do kina na film „Świadek koronny”.

Nadeszła środa. Po zaledwie sześciogodzinnym śnie obudzono nas około szóstej czterdzieści. Za oknami biało i ci, co przyjechali na olimpiadę w lekkim odzieniu albo adidasach, klnęli, na czym świat stoi. Półgodzinny rytuał mycia i ubierania przebiegł sprawnie tak, że na początek śniadania zdążyli prawie wszyscy. Posileni, ruszyliśmy w drogę do WSIZ-u tym samym środkiem komunikacji, co dzień wcześniej. Właściwa olimpiada rozpoczynała się o godzinie dziewiątej. Na rozwiązanie dwóch zadań z pierwszego dnia dostaliśmy pięć godzin. Tuż przed sesją nastąpiło sprawdzenie obecności. W końcu padł sygnał „zaczynamy!” Wszystkie komputery wystartowały w tym samym momencie, a po laboratorium rozszedł się odgłos szeleszczącego papieru, na którym wydrukowano treści zadań. Już po kilku minutach dołączyły do tego pierwsze stukania w klawiatury. Patrzę sobie na treści zadań i czytam. Pierwsze z nich, zwane „Skalniakiem”, polegało na pomocy sługom pewnego hrabiego w rozlokowaniu jego kolekcji kamieni w olbrzymim ogrodzie. Nasz arystokrata podał bowiem dokładne współrzędne każdego głazu, lecz zapomniał określić, która liczba jest rzędną, a która odciętą. Należało tak poprzestawiać kamienie poprzez co najwyżej zamianę współrzędnych, aby kolekcję dało się ogrodzić jak najkrótszym płotem oraz aby łączny koszt przeniesienia wszystkich okazów był jak najmniejszy. W głębszy sens tego zadania nie zamierzałem się zgłębiać i to był błąd, ponieważ później okazało się stosunkowo proste. Jeszcze poważniejszym błędem było nienapisanie programu typu brute-force, czyli sprawdzanie wszystkiego na wszystkim. Zawsze na czymś takim parę punktów może wskoczyć, a poczynienie dodatkowych optymalizacji da ich jeszcze trochę.

O wiele bardziej zaciekawiło mnie zadanie „Powódź”. Bajtogród, stolica Bajtocji została zalana przez wodę. Dostawaliśmy mapę wysokości terenu z zaznaczonymi obszarami należącymi do miasta i musieliśmy stworzyć program, który określa, jaka jest minimalna liczba pomp potrzebna do osuszenia miasta. Tereny poza nim mogły pozostać zalane. Mapę można zawsze potraktować jako graf, w którym wierzchołkami są poszczególne pola, a krawędzie łączą te, które leżą obok siebie. Podszedłem do problemu jednak od nieco złej strony. Zamiast rekurencyjnego przeszukiwania grafu w głąb, do którego trzeba było w skomplikowany sposób podłączać własny stos, mogłem zastosować prostsze do zakodowania w STL-u przeszukiwanie wszerz i rozsądniej wybierać punkty startowe, a miałbym wzorcówkę. A tak zamotałem się, dla części danych program dawał złe odpowiedzi i skończyło się jedynie dwunastoma punktami.

Omówienie zadań

Jednak tamta środa jest o wiele bardziej godna zapamiętania. Po dziesięciu minutach od startu zorientowałem się, że w katalogu mam jedynie testy do zadań z pierwszego etapu. Zgłosiłem problem obsłudze. Pan z obsługi odparł: „Tak, wiemy. Administrator właśnie zastanawia się, co się stało”. Po chwili wszyscy pracujący na Windowsach dostali polecenie, aby odpalić Linuksa, aby można było dograć właściwe pliki. Ja pracowałem domyślnie w tym systemie, więc mogłem spokojnie kodować bez przeszkód. Po dodaniu plików powiedziano, że mamy z tego powodu doliczone dodatkowe dziesięć minut. Nie był to koniec problemów. Zegary tykały, aż nadeszła dziewiąta czterdzieści. Zacząłem już kodować, gdy nagle ekran zrobił się czarny, i to nie tylko mój. Otoczyła nas cisza oraz mrok. Zakład energetyczny wyłączył prąd :))). Z braku maszyn uczestnicy albo zajmowali się rozgryzaniem teoretycznej strony zadań, albo wychodzili do przedsionka skorzystać z poczęstunku. Ponieważ zaczęły się rozmowy, wszyscy jedzący dostali upomnienie, że ma panować nieskazitelna cisza. Przez pierwsze dwadzieścia minut kodowałem na papierze, a gdy skończyłem, wybrałem się do łazienki. Po więcej, niż półgodzinie, zasilanie wróciło i mogliśmy wznowić pisanie. Centrala przedłużyła nam czas o właśnie tę ilość. Aby nie było tak różowo, poinformowano nas, że prąd jest tylko w naszej części budynku, abyśmy mogli pisać i z tego powodu nie działa jeszcze wysyłanie rozwiązań przez Internet do warszawskiej sprawdzaczki. Pełna funkcjonalność powróciła dopiero kilkadziesiąt minut później.

O czternastej trzydzieści czas minął. Ludzie opuszczali pracownię wyraźnie niezadowoleni. Podczas obiadu, na który podano coś smakującego, jak rozgotowany papier wymieszany z celulozą, który w teorii miał być ryżem, dzieliliśmy się spostrzeżeniami na temat zadań. Wyszło na jaw, że wiele osób miało trudności w zrozumieniu treści „Powodzi”. Kiedy rozpoczęło się omawianie zadań, połowa sali głośno protestowała przeciwko takiemu formułowaniu poleceń. Biedny przewodniczący musiał zmagać się nie tylko z prezentacją rozwiązań optymalnych, ale także przymowaniem skarg i zażaleń. Ledwo w sali pojawili się techniczni z raportami wstępnego sprawdzania, krzyknął do nich: „Lećcie po formularze reklamacji! Pięćdziesiąt siedem sztuk!” Ostatecznie parę osób rzeczywiście przelało swe niezadowolenie na papier. Raporty wstępne były niekompletne i obejmowały tylko część testów, jakim programy miały być poddane. W związku z tym nie wiedzieliśmy wtedy, ile kto dokładnie dostał. Mogliśmy jedynie wnioskować, że ci, co mieli punktów 29, czyli tyle, ile wychodziło po podliczeniu maksów za wszystkie wykonane testy, będą mieli setkę ostatecznie. A takich szukać jeno ze świecą. Z mojego raportu wynikało, że otrzymałem sześć punktów. Ponieważ w dużej liczbie testów figurowała fraza „Nieprawidłowa odpowiedź”, na oszałamiający wzrost tej liczby raczej nie liczyłem. I tak znajdowałem się dosyć wysoko w klasyfikacji, ponieważ całe tabuny ludzi miały okrągłe zero. Po przedzwonieniu do znajomych z innych okręgów wyszło na jaw, że w Rzeszowie wcale tak źle nie poszło (czyt: gdzie indziej było gorzej).

Drugie śniadanie :)

Cały wieczór spędzony głównie w pokoju na kwaterze upłynął na dogryzaniu jednego z topcoderowców Dutowi, który swoimi brute'ami pobił go o dwa punkty i równie złośliwych odpowiedziach drugiego (obaj nawiasem mówiąc byli z tej samej szkoły). Reszta przysłuchiwała się temu z nieukrywaną wesołością :). Ponadto hitem wieczoru okazał się jeden z opiekunów, który po przypadkowym zgaszeniu mu światła w łazience wypadł stamtąd z pianą w ustach, gołą klatą i uraczył wszystkich zgromadzonych na korytarzu pełnym emocji „Poje***ło was?!” Kiedy już błądziłem po świecie marzeń sennych, w pokoju wybuchł rozgardiasz. Jacyś dwaj goście targali Duta po jego łóżku i darli się „Gdzie są kluczyki od czołgu?! Dawaj kluczyki od czołgu, bo Ruscy atakują!” Ofiara, wbrew oczekiwaniom, rozbudziła się błyskawicznie i poczęstowała napastników słowną wiązanką nakazującą im oddalenie się oraz wyrażającą przypuszczenie, że chyba im coś na mózg padło :).

Słońce znów wynurzyło się zza horyzontu i zaczęło ostatni dzień olimpiady. Rano poddani zostaliśmy procedurze wykwaterowania, która zmusiła nas do zabrania ze sobą wszystkich swoich bagaży do WSIZ-u. Sesja dnia drugiego rozpoczynała się o tej samej godzinie, czyli dziewiątej. Tym razem przebiegała już bez niespodzianek, a nawet zadania jakieś takie prostsze były. „Tetris attack” nawiązywał do teorii gier – trzeba było określić minimalną liczbę ruchów do skasowania stosu żetonów, korzystając z podanych reguł, a także wyznaczyć przykładową sekwencję. Optymalną strategię dawało się przy odrobinie chęci opracować już w parę minut, natomiast gorzej szło z napisaniem programu pracującego w ten sposób. Znów popełniłem błąd i nie napisałem do tego zadania nawet głupiego brute'a. Po prostu kiedy kodowanie stało się za trudne, przeszedłem do następnego zadania. W „Megalopolis” listonosz Bajtazar wspominał swoje wyprawy do różnych wiosek Bajtocji z Bitowic. Pomiędzy kolejnymi wyprawami kolejne polne dróżki między wioskami stawały się autostradami, a naszym zadaniem było zliczenie, ile polnych dróg przebył Bajtazar w każdej wyprawie. Tu już zacząłem mądrze od napisania brute'a, a później lekkiego zoptymalizowania go. Szkoda, że nie znałem drzew licznikowych, bo ich dodanie w zasadzie gwarantowało rozwiązanie wzorcowe preferujące logarytmiczny czas kolejnych zapytań o ilość polnych drug oraz zamian takowych w autostrady. Mój kod w stałym czasie zmieniał drogę w autostradę, a w czasie liniowym w zależności od wysokości drzewa dróg określał, ile było na trasie polnych drożynek. Wywalczyłem w ten sposób 28 punktów, na pozostałych testach miałem przekroczenie limitu czasu (o dość małe wartości, ale jednak). Raport uwzględniał także pełne testy z dnia poprzedniego. Moja „Powódź” ostatecznie otrzymała 12 i tym samym olimpiadę zakończyłem z wynikiem 40/400 punktów, raczej bez szans na finał (w momencie pisania tej relacji oficjalne wyniki jeszcze nie były znane).

Po zakończeniu zmagań zjedliśmy obiad i udaliśmy się na omówienie zadań. W jego trakcie wszystkim uczestnikom wręczono upominek w postaci koszulki. Później czekaliśmy jeszcze na raporty sprawdzania, a otrzymawszy je, mogliśmy zabrać swoje bagaże i udać się na dworzec PKS w drogę powrotną do Stalowej Woli, której w tym roku zwyczajnie się na OI nie poszczęściło.

Wróciwszy z olimpiady, nasunęło mi się kilka przemyśleń. Przede wszystkim za późno się za całe przygotowanie zabrałem, bowiem dopiero w połowie 2006 roku zacząłem gromadzić literaturę i głębiej czytać o algorytmach itd. Miałem w ten sposób tylko jedną próbę i niestety nie udało się. Gdybym wystartował jeszcze w pierwszej klasie, z pewnością znacznie wcześniej zacząłbym przygotowania z prawdziwego zdarzenia, wykonywanie różnych zadanek, drugi etap osiągając jeszcze w drugiej klasie i na tegoroczną edycję idąc z godnym pozazdroszczenia wyszkoleniem. Jeśli zatem dopiero rozpoczynasz liceum i także pragniesz spróbować swych sił w OI, nie czekaj do samego końca, tylko bierz się za zabawę już teraz! Aby odnieść sukces, należy opanować naprawdę dużą liczbę struktur danych oraz algorytmów, a najlepszym na to sposobem jest po prostu robienie zadań, kodowanie i używanie wiedzy w praktyce. To taka przestroga od tego, który podszedł do sprawy od niewłaściwej strony :). Finał będzie już musiał relacjonować kto inny. Takie jest życie – człowiek uczy się na błędach. Na zakończenie tej relacji przytoczę złotą myśl całego OI wygłoszoną w środowy wieczór przez Duta: „Też miałem kiedyś korzystać z debuggerów, ale w końcu stwierdziłem, że wolę pisać bezbłędnie”.

Podziękowania dla mik01aja za zdjęcia.

Dla redaktorów EIOBA.COM i innych: Jeśli czytany artykuł udostępniony jest na licencji Creative Commons, to proszę wgrywać go do własnych baz danych z takimi oznaczeniami o autorze, jakie chcę aby były i o jakich jest informacja w pliku PDF. Nie mam zamiaru latać po całej sieci i każdemu z osobna te sprawy wyjaśniać. Jeśli natomiast jesteś z EIOBA.COM, nie wgrywaj tego tekstu - sam mam tam konto i uczynię to osobiście w odpowiednim czasie.

© Tomasz "Zyx" Jędrzejewski 2005 - 2008 | Wykonanych zapytań: 1 | Serwer wirtualny zapewnia