Differences

This shows you the differences between two versions of the page.

Link to this comparison view

sd-ca:challenge [2015/03/16 22:48]
alexandru.olteanu
sd-ca:challenge [2015/04/23 08:37] (current)
alexandru.olteanu
Line 1: Line 1:
-SD Challenge 2015 se va desfasura in etape: +SD Challenge 2015 se va desfasura in 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 35: Line 34:
  
 Pe prima linie se vor gasi douna numere intregi M si N ( 1 <= N, M <= 10^6 ), dimensiunea universului,​ respectiv numarul de operatii scrise de Nika pe foaie. Pe prima linie se vor gasi douna numere intregi M si N ( 1 <= N, M <= 10^6 ), dimensiunea universului,​ respectiv numarul de operatii scrise de Nika pe foaie.
-Pe urmatoarele N linii se vor gasi cate doi intregi tip si x ( 0 <= tip <= 3, 0 <= x < M ), tipul operatiei si pozitia pe care se face operatia.+Pe urmatoarele N linii se vor gasi cate doi intregi tip si x ( 0 <= tip <= 4, 0 <= x < M ), tipul operatiei si pozitia pe care se face operatia.
  
 == Output ==  == Output == 
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 ===
  
-Solutiile vor trebui trimise pe [[https://​elf.cs.pub.ro/​vmchecker/​ui/#​SD|vmchecker]].  +Solutiile ​pentru prima etapa vor trebui trimise pe [[https://​elf.cs.pub.ro/​vmchecker/​ui/#​SD|vmchecker]] în secțiunea **Structuri de Date (CA)**, la taskul **Extra: Universal Successor**
-**Atenție!** Temele trebuie trimise ​în secțiunea **Structuri de Date (CA)**, la taskul **Extra: Universal Successor**+
  
 La trimiterea unei rezolvari, veti primi timpul obtinut. Va sfatuim sa incercati sa reduceti cat mai mult acest timp de rulare. La sfarsitul fiecarei etape, se va publica clasamentul oficial, obtinut in urma rularii solutiilor trimise de voi pe vmchecker, pe o alta masina, dedicata testului, in care se va asigura egalitatea de sanse intre solutii. ​ La trimiterea unei rezolvari, veti primi timpul obtinut. Va sfatuim sa incercati sa reduceti cat mai mult acest timp de rulare. La sfarsitul fiecarei etape, se va publica clasamentul oficial, obtinut in urma rularii solutiilor trimise de voi pe vmchecker, pe o alta masina, dedicata testului, in care se va asigura egalitatea de sanse intre solutii. ​
  
 Clasamentul final va lua in calcul performantele obtinute in fiecare etapa, plus o comparatie pe care urmeaza sa o faceti intre solutiile pe care le-ati dezvoltat in fiecare etapa. Clasamentul final va lua in calcul performantele obtinute in fiecare etapa, plus o comparatie pe care urmeaza sa o faceti intre solutiile pe care le-ati dezvoltat in fiecare etapa.
sd-ca/challenge.1426538898.txt.gz · Last modified: 2015/03/16 22:48 by alexandru.olteanu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0