This shows you the differences between two versions of the page.
sd-ca:challenge [2015/03/18 20:44] silviu_emil.popescu |
sd-ca:challenge [2015/04/23 08:37] (current) alexandru.olteanu |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | SD Challenge 2015 se va desfasura in 4 etape: | + | SD Challenge 2015 se va desfasura in 2 etape: |
- | * in prima etapa primiti doar enuntul | + | * in prima etapa primiti doar enuntul (deadline 22 aprilie) |
- | * in a doua etapa primiti o prima indicatie de rezolvare | + | * in a doua etapa primiti indicatii de rezolvare (deadline 17 mai) |
- | * in a treia etapa primiti o alta indicatie de rezolvare | + | |
- | * in a patra etapa primiti o ultima indicatie de rezolvare | + | |
=== Enunt === | === Enunt === | ||
Line 21: | Line 20: | ||
* 2 x - Nika isi pune intrebarea: "In casuta x se afla un bit?" | * 2 x - Nika isi pune intrebarea: "In casuta x se afla un bit?" | ||
* 3 x - Nika isi pune intrebarea: "Care este prima casuta ce contine un bit din dreapta casutei cu numarul x (care la randul ei contine un bit)?" | * 3 x - Nika isi pune intrebarea: "Care este prima casuta ce contine un bit din dreapta casutei cu numarul x (care la randul ei contine un bit)?" | ||
- | * 4 x - Nika isi pune intrebarea: "Dintre toate casutele care au bitul 1 setat, care este de ce-a K-a in ordine crescatoare?" | + | * 4 x - Nika isi pune intrebarea: "Dintre toate casutele care au bitul 1 setat, care este de ce-a x-a in ordine crescatoare?" |
Pentru ca Nika este extenuata de la atata scris si nu mai vrea sa gandeasca, va roaga pe voi sa ii raspundeti la intrebari cat mai repede cu putinta. | Pentru ca Nika este extenuata de la atata scris si nu mai vrea sa gandeasca, va roaga pe voi sa ii raspundeti la intrebari cat mai repede cu putinta. | ||
Line 53: | Line 52: | ||
<code c++ output> | <code c++ output> | ||
+ | 1 | ||
1 | 1 | ||
4 | 4 | ||
</code> | </code> | ||
+ | === Indicatii de rezolvare === | ||
+ | |||
+ | <note> | ||
+ | Pentru rezolvarea optima a problemei, trebuie un algoritm mai rapid ca o cautare binara ( de complexitate mai mica decat O(log n) pe querry). | ||
+ | Pentru aceasta, va invitam sa va uitati peste urmatoarele structuri de date: | ||
+ | * van Emde Boas trees: | ||
+ | * http://en.wikipedia.org/wiki/Van_Emde_Boas_tree | ||
+ | * https://courses.csail.mit.edu/6.897/spring03/scribe_notes/L1/lecture1.pdf | ||
+ | * Xfast trie (o extensie a structurii de date trie): | ||
+ | * http://en.wikipedia.org/wiki/X-fast_trie | ||
+ | * http://web.stanford.edu/class/archive/cs/cs166/cs166.1146/lectures/15/Small15.pdf | ||
+ | * http://www.borzov.ca/posts/xfast/ | ||
+ | * Yfast trie (cine baga structura asta e un zeu si merita statuie in curtea Politehnicii) | ||
+ | |||
+ | </note> | ||
+ | |||
+ | |||
+ | === Indicatii de implementare === | ||
+ | |||
+ | Pentru etapa 2, veti avea de implementat functiile din headerul ''successor.h'' aflat in arhiva de mai jos. Aceste functii corespund operatiilor de mai sus si se numesc ''add'', ''erase'', ''find'', ''next'' si ''findK''. Citirea este facuta in intregime de programul ''main.cpp''. Voi va trebui sa va scrieti rezolvarea in sursa ''successor.cpp'' care apoi va fi compilata in felul urmator ''g++ -Wall main.cpp successor.cpp -o successor''.\\ | ||
+ | {{:sd-ca:5-univ-successor.zip|Aici}} puteti gasi arhiva cu sursele, respectiv cateva dintre testele folosite pentru evaluare. | ||
=== Indicatii de trimitere === | === Indicatii de trimitere === |