tz

Jocul TZIANSITZI, ceea ce in traducere inseamna "alegerea pietrelor", este un joc popular din China. Doi jucatori extrag alternativ pietre din doua gramezi. La fiecare miscare un jucator poate extrage acelasi numar de pietre din ambele gramezi sau un numar oarecare de pietre din una dintre gramezi. Castiga jucatorul care ia si ultima piatra.

Cerinta

Se cere sa testati daca, pentru o configuratie data, primul jucator are sau nu strategie de castig si daca da sa programati mutarile primului jucator, mutarile celui de al doilea jucator fiind citite de la tastatura.

Date de intrare

Programul nu citeste date din nici un fisier.

Date de iesire

Programul nu va scrie date in nici un fisier.

Interactiune

Programul vostru va interactiona cu un program al comisiei care ruleaza în paralel. În cadrul unui set de test (test-case), programul vostru va trebui sa dea raspunsul corect pentru mai multe teste. Pentru fiecare test din set, interactiunea are urmatorul format:
1. Programul vostru citeste o linie de la intrarea standard, care contine
doua numere naturale n m separate printr-un spatiu (n este numarul de pietre din prima gramada, m este numarul de pietre din a doua gramada pentru testul respectiv). Daca n si m sunt nule, inseamna ca setul de test s-a terminat.
2.
Apoi, programul vostru va determina daca primul jucator are sau nu strategie sigura de castig. In caz afirmativ, va scrie o linie ce contine doar valoarea 1. In caz contrar (deci daca primul jucator nu are strategie sigura de castig) se va scrie o linie ce contine doar valoarea 0 (zero) si apoi o linie linie care contine cuvantul DONE.
3.
Daca primul jucator are strategie sigura de castig, programul vostru va efectua un numar de runde. O runda consta din scrierea unei linii la iesirea standard, care descrie operatia efectuata de primul jucator în runda respectiva. O operatie este descrisa prin numarul gramezii din care jucatorul extrage pietre (1 pentru prima gramada, 2 pentru cea de a doua, respectiv 3 pentru ambele gramezi), urmat de un spatiu, apoi de un numar natural nenul care reprezinta numarul de pietre extrase. Apoi, se va citi o linie de intrarea standard care descrie operatia efectuata de al doilea jucator (operatia fiind specificata in acelasi mod). Când programul vostru a executat ultima mutare, afiseaza o linie speciala, continand numai cuvantul DONE

Punctaj

Programul vostru va primi punctajul corespunzator setului de teste curent daca si numai daca a rezolvat corect toate testele continute in setul respectiv.
Programul vostru primeste 0 puncte pe un anumit test in urmatoarele situatii :
- afiseaza in cadrul unei runde o operatie ce nu poate fi executata la momentul respectiv;
- afiseaza ca primul jucator are strategie sigura de castig atunci cand nu are (sau invers);
- atunci cand primul jucator are strategie sigura de castig, programul vostru nu castiga;
- formatul de afisare impus in problema nu este respectat.

Instructiuni de programare

Programatorii în C/C++ trebuie sa execute flush dupa ce au terminat de scris o linie completa la iesire. Acest lucru este valabil si pentru linia continând DONE

În cazul programelor scrise în C++ si utilizarea iostreams, se va folosi urmatoarea secventa pentru citirea de la intrarea standard si scrierea la iesirea standard:
cin>>x;
cout<<op<<'\n'<<flush;

În cazul programelor în C sau C++ si utilizarea scanf si printf, se va folosi urmatoarea secventa pentru citirea de la intrarea standard si scrierea la iesirea standard:
scanf ("%d", &x);
printf("%d\n",op); fflush (stdout);

În cazul programelor în Pascal se va folosi urmatoarea secventa pentru citire de la intrarea standard se utilizeaza readln, iar pentru afisarea unei linii se utilizeaza writeln :
readln(x);
writeln(op);

Restrictii si precizari

1 <= n <= 1016
Intr-un set de teste sunt cel mult 7 teste.

Exemplu de interactiune

Operatie Semnificatie

Citeste 1 2
Scrie 0
Scrie DONE
Citeste 5 6
Scrie 1
Scrie 2 3
Citeste 1 1
Scrie 3 2
Citeste 3 1
Scrie 1 1
Scrie DONE
Citeste 0 0

n=1, m=2
Primul jucator nu are strategie sigura de castig
S-a terminat primul test
n=5, m=6
Primul jucator are strategie sigura de castig
Primul jucator extrage 3 pietre din gramada 2
Al doilea jucator extrage 1 pietre din gramada 1
Primul jucator extrage 2 pietre din ambele gramezi
Al doilea jucator extrage 1 pietre din ambele gramezi
Primul jucator extrage 1 pietre din gramada 1
Acest test s-a terminat
Acest test-case s-a terminat

Timp maxim de executie/test: 0.1 secunde

prof. Emanuela Cerchez
Liceul de Informatica "Grigore Moisil" Iasi
Contact:emanuela.cerchez@gmail.com