,,Faci problema, nu faci problema, tot shaorma bagi după''
Se știu două lucruri despre cina festivă: faptul că se va servi shaorma și modul de așezare al invitaților. Vor fi persoane numerotate de la la și o cameră cu o masă rotundă care are exact locuri, iar fiecare persoană are un loc distinct rezervat ce nu este încă dezvăluit.
Pentru a descoperi locul rezervat fiecărei persoane se pot organiza întâlniri ale celor invitați în sala de mese. Înainte de fiecare întâlnire poți stabili ordinea în care vor veni persoanele la aceasta. La finalul fiecărei întâlniri vi se dă lista invitaților care au ajuns la aceasta înaintea ambilor vecini din așezarea secretă de la masă.
Cerință
Să se afle locurile rezervate fiecărui invitat pe baza informațiilor obținute din cele întâlniri.
Detalii de implementare
Trebuie să implementezi următoarea funcție
std::vector<int> find_places(int N);
Această funcție trebuie să returneze răspunsul, care reprezintă modul de așezare al invitaților la masă. Orice soluție în care fiecare din invitați au aceeași vecini ca în așezarea aleasă de comisie, va fi considerată corectă. Șirul întors de funcție este indexat de la .
Poți folosi următoarea funcție în implementarea soluției tale.
std::vector<int> query(std::vector<int> order);
Această funcție va returna pentru întâlnirea stabilită (dată prin ordinea în care cele persoane ajung la întâlnire) un șir format din numerele de ordine ale persoanelor care au ajuns la întâlnire înaintea ambilor vecini din așezarea secretă de la masă.
Această funcție primește ca parametru indicii persoanelor în ordinea în care se așază la masă în cadrul unei întâlniri. Această funcție va întoarce șirul numerelor de ordine ale persoanelor care au ajuns la întâlnire înaintea ambilor vecini din așezarea secretă de la masă. Șirul dat ca parametru trebuie să fie o permutare a numerelor de la la și trebuie indexat de la .
Nu uita să incluzi header-ul gurgerbrill.h
!
Restricții
Interactorul nu este adaptiv. Permutarea nu se schimbă indiferent de întâlnirile pe care le stabilește concurentul.
# | Punctaj | |||
---|---|---|---|---|
1 | 3 | |||
2 | 4 | |||
3 | 5 | |||
4 | 13 | |||
5 | 15 | |||
6 | 60 |
Formulă de scoring
Fie numărul de interogări făcute de concurent. Fie punctajul asociat grupei de teste.
- Dacă , atunci se primesc puncte pe test.
- Dacă atunci se primesc 0 puncte pe test.
- Altfel, scorul concurentului este
Exemplu
Se apelează find_places
cu :
Concurent:
Grader:
Concurent:
Grader:
Concurent:
Grader:
Concurent:
Grader:
Concurent:
Grader:
Concurent:
Grader:
Concurent:
Grader:
find_places
returnează