#3229
The Grade
Aleku Turcul este la ora de matematica. În timp ce el încearcă să-și dea seama dacă 1+1=2
, profesorul scrie pe tablă o problemă ceva mai complicată. Se dau Q queryuri și o listă S
cu P
elemente egale cu 0
. Notăm cu A
un șir, care inițial este vid. Queryurile pot fi de forma:
- 0 x
(inserează valoarea x
în A
)
- 1 x
(șterge valoarea x
din A
; se garantează că există cel puțin o valoare de x
în A
)
Se garantează că A
nu va fi niciodată vid după vreun query. După fiecare query profesorul îi pune lui Aleku următoarea întrebare: oare pot așeza în lista S
toate numerele din A
(nu neapărat în ordinea în care se află în A
) astfel încât:
A
se vor așeza în S
pe poziții distincte, restul pozițiilor din S
fiind ocupate de elemente cu valoarea 0
S[i]
un element nenul din S
și S[j]
cel mai apropiat element nenul care se află în stânga lui S[i]
în S
. Atunci următoarea condiție trebuie respectată: i - j ≥ S[i]
f
poziția celui mai din stânga element nenul din S
. Atunci f ≥ S[f]
.Dacă răspunsul la întrebarea profesorului este da, atunci să se spună și câte configurații diferite se pot obține. Deoarece răspunsul la întrebare poate fi foarte mare, acesta se va afișa modulo 1.000.000.007
. Dacă răspunsul este nu, se va afișa -1
.
Ajutați-l pe Aleku sa răspundă corect la întrebările profesorului pentru ca sa obțină nota 10. Media lui depinde de aceasta!
infO(1) cup 2018, Runda națională
Problema | The Grade | Operații I/O | tastatură/ecran |
---|---|---|---|
Limita timp | 0.5 secunde | Limita memorie |
Total: 256 MB
/
Stivă 8 MB
|
Id soluție | #42338843 | Utilizator | |
Fișier | the_grade.cpp | Dimensiune | 7.90 KB |
Data încărcării | 01 Martie 2023, 17:44 | Scor / rezultat | 12 puncte |
the_grade.cpp:329:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type] main() ^ the_grade.cpp: In function 'void setF(std::string)': the_grade.cpp:173:48: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result] freopen((fileName+".in").c_str(), "r", stdin); ^ the_grade.cpp:174:50: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result] freopen((fileName+".out").c_str(), "w", stdout); ^
Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
---|---|---|---|---|---|---|
1 | 0.044 secunde | OK. | 3 | 3 | ||
2 | 0.048 secunde | OK. | 3 | 3 | ||
3 | 0.048 secunde | OK. | 3 | 3 | ||
4 | 0.048 secunde | OK. | 3 | 3 | ||
5 | Depășit | Limita de timp depășită | 3 | 0 | ||
6 | Depășit | Limita de timp depășită | 3 | 0 | ||
7 | Depășit | Limita de timp depășită | 3 | 0 | ||
8 | Depășit | Limita de timp depășită | 3 | 0 | ||
9 | Depășit | Limita de timp depășită | 3 | 0 | ||
10 | Depășit | Limita de timp depășită | 3 | 0 | ||
11 | Depășit | Limita de timp depășită | 3 | 0 | ||
12 | Depășit | Limita de timp depășită | 3 | 0 | ||
13 | Depășit | Limita de timp depășită | 3 | 0 | ||
14 | Depășit | Limita de timp depășită | 3 | 0 | ||
15 | Depășit | Limita de timp depășită | 3 | 0 | ||
16 | Depășit | Limita de timp depășită | 3 | 0 | ||
17 | Depășit | Limita de timp depășită | 3 | 0 | ||
18 | Depășit | Limita de timp depășită | 3 | 0 | ||
19 | Depășit | Limita de timp depășită | 3 | 0 | ||
20 | Depășit | Limita de timp depășită | 3 | 0 | ||
21 | Depășit | Limita de timp depășită | 4 | 0 | ||
22 | Depășit | Limita de timp depășită | 4 | 0 | ||
23 | Depășit | Limita de timp depășită | 4 | 0 | ||
24 | Depășit | Limita de timp depășită | 4 | 0 | ||
25 | Depășit | Limita de timp depășită | 4 | 0 | ||
26 | Depășit | Limita de timp depășită | 4 | 0 | ||
27 | Depășit | Limita de timp depășită | 4 | 0 | ||
28 | Depășit | Limita de timp depășită | 4 | 0 | ||
29 | Depășit | Limita de timp depășită | 4 | 0 | ||
30 | Depășit | Limita de timp depășită | 4 | 0 | ||
Punctaj total | 12 |
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema The Grade face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:
Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.