www.agora.ro

Rezultatele rundei a patra

Runda 4, problema 1

Labirint (Tom&Jerry)

Aceasta a fost problema cu punctajul mediu cel mai redus de până acum: 19.77 puncte. Aceasta s-a datorat, în mare măsură, faptului că mulți concurenți nu au înțeles că pozițiile lui Tom și Jerry sunt date în formatul coloană, linie. Noi am considerat că este destul de evident că x este coordonata orizontală și y cea verticală, dar se pare că nu am reușit decât să creăm confuzie, motiv pentru care ne cerem scuze.

Unii concurenți au rezolvat corect problema, dar nu au luat în considerare faptul că numărul drumurilor posibile poate avea peste 50 de cifre, deci trebuiau simulate operațiile cu numere mari; singurul care a rezolvat perfect problema a fost Mihai Pătrașcu din Craiova.

Problema era de fapt foarte simplă, drumul minim într-un labirint fiind foarte ușor de determinat, folosind, de exemplu, metoda programării dinamice (algoritmul lui Lee). Problema determinării numărului drumurilor minime nu este nici ea foarte dificilă; rezolvarea ei a fost prezentată în numărul 4/1999 al GInfo, problema Drumuri pe autostradă (enunțul apare în GInfo 2/1999). Vă prezentăm în continuare soluția propusă de Mihai Pătrașcu (poate înțelegeți ceva...).

Listing LABIRINT.CPP

 

Runda 4, Problema 2

Star Trek (GInfo Generation)

Chiar dacă această problemă a fost destul de dificilă, numărul redus al concurenților care au încercat să o rezolve a dus la un punctaj mediu acceptabil, de exact 50 de puncte.

Rezolvarea problemei necesita cunoașterea a doi algoritmi fundamentali de geometrie computațională și anume determinarea înfășurătorii convexe a unei mulțimi de puncte (prezentat în GInfo 8/1998) și determinarea intersecției a două poligoane convexe (prezentat în GInfo 4-5/1998 și GInfo 8/1999). Aria poligonului intersecție este apoi foarte ușor de calculat, determinând o triangulație a poligonului și însumând aria triunghiurilor formate.

Vă prezentăm acum soluția propusă de Gabriel Pârvan din Râmnicu Sărat.

Listing STARTREK.PAS

Runda 4, problema 3

Ordonare (algoritm la nivel de biți)

Aceasta a fost o problemă foarte ușoară; ea a necesitat doar cunoașterea modului de codificare a numerelor distincte folosind algoritmi pe biți (prezentați în numărul 7/1999 al GInfo); punctajul mediu obținut a fost de 50.23 puncte.

Avem 1000000 de biți (125000 bytes) pentru a codifica numerele din intervalul [0,999999]. Dacă un anumit număr apare în fișierul de intrare, vom atribui valoarea 1 bit-ului corespunzător.

Pentru afișarea numerelor în ordine crescătoare vom parcurge șirul de biți (începând de la 0) și, în cazul în care un bit are valoarea 1, vom scrie numărul corespunzător în fișierul de ieșire.

Vă prezentăm în continuare soluția propusă de Dumitran Daniel din București.

Listing NUMERE.CPP

[cuprins]