infoarena

infoarena - concursuri, probleme, evaluator, articole => Algoritmiada 2013 => Subiect creat de: Serban Andrei Stan din Ianuarie 20, 2013, 00:12:27



Titlul: Queue
Scris de: Serban Andrei Stan din Ianuarie 20, 2013, 00:12:27
Aici se pot pune întrebări legate de problema Queue de la Runda 2 a concursului Algoritmiada 2013.

Timpul alocat întrebărilor este de 1 ora dupa inceperea concursului. Întrebările vor fi formulate astfel încât să se poată răspunde cu DA sau NU. În caz contrar sau în cazul în care întrebarea își găsește răspuns în enunțul problemei, răspunsul va fi FARA COMENTARII.


Titlul: Răspuns: Queue
Scris de: Mihai Ionut Enache din Ianuarie 20, 2013, 09:46:33
Toate valorile folosite in operatiile de push vor fi numere intregi ≤ 10^6.
Sunt numai numere naturale sau pot fi si negative?


Titlul: Răspuns: Queue
Scris de: Alex Velea din Ianuarie 20, 2013, 09:46:43
Citat
Pe fiecare linie a fisierului de output puteti afisa maximum 500 000 caractere, altfel outputul se va considera invalid.

Citat
[...] trebuie sa inceapa cu indicele operatiei din input careia sirul de operatii de pe linia curenta ii corespunde

Daca pentru a face operatia 'x' am nevoie de mai mult de 500 k de caractere de afisat, pot afisa pe 2 linii?

x: ..
x: ..



Titlul: Răspuns: Queue
Scris de: Oncescu Costin din Ianuarie 20, 2013, 09:50:39
Eu nu am inteles exact ce trebuie sa facem.Nu vad nici o cerinta. :?


Titlul: Răspuns: Queue
Scris de: Gramatovici Paul din Ianuarie 20, 2013, 09:50:54
Citat
Pe fiecare linie a fisierului de output puteti afisa maximum 500 000 caractere, altfel outputul se va considera invalid.

Restrictia asta sigur e corecta?


Titlul: Răspuns: Queue
Scris de: Ilie Andrei din Ianuarie 20, 2013, 09:51:30
In loc de ultimia linie din .out de la ex:"5: read(2) push(2,2)" putea fi si "5: read(2) push(1,2)"?


Titlul: Răspuns: Queue
Scris de: Florin Chirica din Ianuarie 20, 2013, 09:51:56
Se garanteaza ca exista cel putin un element in coada cand se face operatia pop_front() ?


Titlul: Răspuns: Queue
Scris de: Alex Velea din Ianuarie 20, 2013, 09:52:20
Se garanteaza ca in operatiile sunt valide? ( Nu o sa se ceara scoaterea unui element cand stiva este goala )


Titlul: Răspuns: Queue
Scris de: Bodnariuc Dan Alexandru din Ianuarie 20, 2013, 09:53:23
sunt de acord cu geniucos ar trebui sa fie mai clara problema nu intaleg nimic din enunt.


Titlul: Răspuns: Queue
Scris de: Serban Andrei Stan din Ianuarie 20, 2013, 09:55:37
@Mihai22e naturale
@veleandu NU
@geniucos Citeste mai atent, si restrictiile si inputul.
@gramatovici_paul DA
@andreii1 DA
@elfus2 & veleandu Operatiile sunt valide


Titlul: Răspuns: Queue
Scris de: Florin Chirica din Ianuarie 20, 2013, 10:04:09
Este obligatoriu ca operatiile din out sa se execute in ordinea 1, 2, ... N ?


Titlul: Răspuns: Queue
Scris de: Serban Andrei Stan din Ianuarie 20, 2013, 10:05:02
No comment

Daca te referi daca afisarile sa se execute in ordinea 1..N, raspunsul este DA.


Titlul: Răspuns: Queue
Scris de: Profir Tudor din Ianuarie 20, 2013, 10:08:16
Ce ar trebui sa insemne feedback-ul "Variabila de push invalida"?


Titlul: Răspuns: Queue
Scris de: Serban Andrei Stan din Ianuarie 20, 2013, 10:11:28
Ca faci push cu o valoare != wr.


Titlul: Răspuns: Queue
Scris de: Gemene Narcis - Gabriel din Ianuarie 20, 2013, 10:23:26
Solutia este unica?


Titlul: Răspuns: Queue
Scris de: Marian Darius din Ianuarie 20, 2013, 10:23:43
Se mai poate adauga un test la feedback?


Titlul: Răspuns: Queue
Scris de: Serban Andrei Stan din Ianuarie 20, 2013, 10:31:40
@narcis_vs No comment, citeste raspunsurile de mai sus.


Titlul: Răspuns: Queue
Scris de: Stochitoiu Radu din Ianuarie 20, 2013, 11:06:27
De ce este gresit output-ul acesta ?
1: read(3) push(1,3)
2: read(5) push(1,5)
3: pop(1) push(2,5) pop(1) push(2,3) pop(2) write(3)
4: pop(2) write(5)
5: read(2) push(1,2)
Nu inteleg . :|


Titlul: Răspuns: Queue
Scris de: Avramescu Cristian din Ianuarie 20, 2013, 11:14:18
ce inseamana:"Afisare invalida a valorii WR"?


Titlul: Răspuns: Queue
Scris de: Puscas Sergiu din Ianuarie 20, 2013, 11:16:41
De ce este gresit output-ul acesta ?
[...]
Nu inteleg . :|

nu e gresit, si sursa mea da exact acelasi output pe exemplu, si ia ok pe testul de feedback.
ai grija la restrictia "O operatie de push efectuata pe una dintre stive se considera valida daca valoare folosita se afla in WR."


Titlul: Răspuns: Queue
Scris de: Stochitoiu Radu din Ianuarie 20, 2013, 11:29:32
De ce este gresit output-ul acesta ?
[...]
Nu inteleg . :|

nu e gresit, si sursa mea da exact acelasi output pe exemplu, si ia ok pe testul de feedback.
ai grija la restrictia "O operatie de push efectuata pe una dintre stive se considera valida daca valoare folosita se afla in WR."

Am folosit read(2) => Este folosita in WR, deci pot folosi push(1,2) ; Chiar nu inteleg !!!


Titlul: Răspuns: Queue
Scris de: Nicu B. din Ianuarie 20, 2013, 12:22:52
Mi-am dat seama.


Titlul: Răspuns: Queue
Scris de: Puscas Sergiu din Ianuarie 20, 2013, 12:31:57
Cod:
4: read(5) pop(2) push(1,2) push(1,5)

aici, tu il citesti pe 5 (wr = 5), apoi scoti varful din stiva 2 (wr = varful = 2), il introduci pe wr (=2) in prima stiva, dupa care incerci sa il introduci si pe 5 (numarul citit initial) in aceeasi stiva.
ultima operatie nu respecta restrictia scrisa mai sus, pentru ca functiei push() ii poti da ca parametru doar valoarea actuala a variabilei wr, iar tie ti se pierde acea valoare.

corect ar fi cam asa:
Cod:
4: pop(2) push(1,2) read(5) push(1,5)


Titlul: Răspuns: Queue
Scris de: Tudor Costin Razvan din Ianuarie 20, 2013, 12:41:17
testul 1 e exemplul??


Titlul: Răspuns: Queue
Scris de: Gramatovici Paul din Ianuarie 20, 2013, 19:46:25
Intr-un worst case, sursa mea afiseaza peste 750.000 de caractere pe un rand. Totusi am luat 100.  Nu sunt singuru in situatia asta. Modificati testele sau modificati restrictia?


Titlul: Răspuns: Queue
Scris de: Alex Cociorva din Ianuarie 20, 2013, 20:28:22
Cum pot sa afisez cat mai rapid instructiunile?
Daca afisez cu printf("text") iau tle.

LE: TLE-ul nu era de la afisare, ci de la algoritm. Am schimbat metoda de rezolvare si acum iau 100 puncte.


Titlul: Răspuns: Queue
Scris de: Avramescu Cristian din Ianuarie 20, 2013, 21:55:43
care este solutia optima?eu iau tot 30..si nu cred ca pop sa o mai optimizez...


Titlul: Răspuns: Queue
Scris de: Alex Velea din Ianuarie 20, 2013, 23:10:25
Paul are dreptate ..
Adi craciun are o solutie destul de smechera, care merge cu limita aia cu 500k pe linie, dar personal, cred ca se freaca la timp :-s


Titlul: Răspuns: Queue
Scris de: Rares Buhai din Ianuarie 21, 2013, 15:05:04
Ca sa iti intre bine in limite, observai ca poti sa ai maxim 15000 pop_front()-uri. Deci nu aveai nevoie sa afisezi vreodata mai mult de primele 15000 elemente intrate, asa ca bagai in seama doar maxim primele 15000 de push_back()-uri (daca nu, puneai "read(...)", dar nu introduceai valoarea in stiva). Asa ti se injumatatea numarul de elemente din stiva, deci ti se injumatatea si dimensiunea maxima a unei linii.


Titlul: Răspuns: Queue
Scris de: Alex Velea din Ianuarie 21, 2013, 18:42:13
Interesant ...
Eu aveam 2 stive, una in care puneam si alta din care scoteam.
Daca nu aveam ce scoate, scoteam tot din stiva de entry si puneam tot in cea de exit, si practic imi rasturnam stiva.

Ai dreptate Rares, dar daca am deja cateva elemente in stiva de exit, cum pot rasturna stiva de entry? :-s


Titlul: Răspuns: Queue
Scris de: Vlad Tarniceru din Ianuarie 21, 2013, 18:49:06
Ai dreptate Rares, dar daca am deja cateva elemente in stiva de exit, cum pot rasturna stiva de entry? :-s

Pai cred ca merge oricum, adica tu atunci cand inserezi un element nou intr-o stiva verifici daca nu cumva ai inserat in total mai mult de 15000.


Titlul: Răspuns: Queue
Scris de: Rares Buhai din Ianuarie 21, 2013, 19:23:24
Interesant ...
Eu aveam 2 stive, una in care puneam si alta din care scoteam.
Daca nu aveam ce scoate, scoteam tot din stiva de entry si puneam tot in cea de exit, si practic imi rasturnam stiva.

Ai dreptate Rares, dar daca am deja cateva elemente in stiva de exit, cum pot rasturna stiva de entry? :-s
Faci la fel ca in solutia ta.
Singura modificare e ca, atunci cand iti vine un query "push_back()", daca ai avut pana la acel moment deja 15000 de push_back()-uri il ignori (faci doar "read()"-ul, fara sa mai pui nicaieri elementul).


Titlul: Răspuns: Queue
Scris de: Alex Velea din Ianuarie 21, 2013, 21:34:27
Glumesti?
Adica .. tu te folosesti de un glitch in evaluator .. in sensul ca in realitate nu ar merge asta.

+1.