This is an old revision of the document!


SD Challenge 2015 se va desfasura in 4 etape:

  • in prima etapa primiti doar enuntul
  • in a doua etapa primiti o prima indicatie de rezolvare
  • in a treia etapa primiti o alta indicatie de rezolvare
  • in a patra etapa primiti o ultima indicatie de rezolvare
Enunt

Dupa multele aventuri pe care le-a avut jucandu-se cu grafurile bunicilor, Nika fetita noastra neastamparata si-a propus sa infiinteze un Univers de exact M casute numerotate de la 0 la M - 1.

Zis si facut, dar, dupa un timp, in universul static creat de Nika, a aparut haosul sub forma unor biti neastamparati astfel:

  • La un moment de timp, intr-o casuta nu poate fi mai mult de un bit
  • Un bit poate ocupa exact o casuta

Nika repede a luat o foaie si a notat, in ordine, evenimentele petrecute in universul ei precum si niste intrebari ramase pana acum nesolutionate.

Operatiile posibile in univers sunt urmatoarele:

  • 0 x - in casuta cu numarul x din univers apare un bit (din 0 se face 1)
  • 1 x - din casuta cu numarul x din univers dispare un bit (din 1 se face 0)
  • 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)?”
  • 4 x - Nika isi pune intrebarea: “Dintre toate casutele care au bitul 1 setat, care este de ce-a K-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.

Precizari
  • executabilul generat de codul vostru trebuie sa se numeasca 'successor'
  • sursa voastra trebuie compilata fara niciun fel de optimizari din partea compilatorului
  • cu exceptia structurilor de date de baza (stiva, coada, lista, vector) nu aveti voie sa folositi structuri gata implementate din STL
Input

Citirea si scrierea se vor face de la tastatura

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.

Output

La iesire, se vor scrie, pe linii separata, raspunsurile la intrebarile fetitei noastre.

Exemplu
input
6 5
0 1
0 4
2 1
3 0
3 1
output
1
4
Indicatii de trimitere

Temele vor trebui trimise pe vmchecker. Atenție! Temele trebuie trimise în secțiunea Structuri de Date (CA).

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.

sd-ca/challenge.1426538756.txt.gz · Last modified: 2015/03/16 22:45 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