Time limit: 0.03s
Memory limit: 2MB
Input:
Output:
Enunţ
Se consideră un triplet unde .
Pentru a afla tripletul, putem pune întrebări de forma:
ask(a, b, c)
cu semnificaţia: "Este tripletul egal cu tripletul ?" (unde ).
Răspunsul la o astfel de întrebare este dacă cel puţin două valori din mulţimea sunt nule, respectiv în caz contrar.
Cerință
Determinaţi tripletul fără a depăşi un număr maxim de întrebări specificat.
Protocol de interacţiune
Programul vostru nu va citi şi nu va scrie nici un fişier. În schimb, va trebui să implementeze funcția
std::vector<int> solve(int n, int m);
ce va primi ca parametrii - cu semnficația de mai sus și - numărul maxim de interogări permise. Funcția va returna un vector ce conține tripletul căutat. În interiorul funcției puteți apela funcția
int ask(int a, int b, int c);
Restricții și precizări
- Funcția va fi apelată de maxim 5 ori în cadrul unui test.
- Numărul maxim de interogări este , cu o constantă subunitară.
- Ordinea valorilor în triplet contează .
- Trebuie să includeți fișierul
treinr.h
Punctaj
Punctajul pentru un test va fi zero dacǎ:
- se depǎşeşte timpul de rulare
- nu se respectǎ protocolul de interacțiune
- rǎspunsul este incorect pentru cel puţin un set de date
- se depǎşeşte numǎrul maxim de întrebări permise .