#4436
Misiunea lui Loid constă în a dinamita piatra de pe unele niveluri pentru a provoca surparea minei și curgerea nisipului spre nivelurile inferioare. El are de îndeplinit m sarcini numerotate de la 1 la m. Acestea sunt de două tipuri:
1 t p (dinamitare): Loid trebuie ca, la secunda t, să dinamiteze piatra de pe nivelul p al minei. Pentru orice astfel de sarcină, Loid știe că, la secunda t, nivelul p conține piatră, iar aceasta va fi înlocuită de aer la secunda t+1, după dinamitare.2 t p (întrebare): Pentru a i se testa perspicacitatea, Loid este întrebat ce conține nivelul p al minei la secunda t: aer, nisip sau piatră?Dându-se n, conținuturile tuturor nivelurilor minei la secunda 0, m și sarcinile care trebuie îndeplinite, să se determine răspunsurile la sarcinile de tip întrebare.
ONI 2023, clasa a IX-a
| Problema | nisip | Operații I/O |
nisip.in/nisip.out
|
|---|---|---|---|
| Limita timp | 1.5 secunde | Limita memorie |
Total: 128 MB
/
Stivă 64 MB
|
| Id soluție | #63862913 | Utilizator | |
| Fișier | nisip.cpp | Dimensiune | 7.05 KB |
| Data încărcării | 23 Martie 2026, 13:30 | Scor/rezultat | 100 puncte |
nisip.cpp: In function 'int main()': nisip.cpp:49:36: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result] freopen("nisip.in", "r", stdin); ^ nisip.cpp:50:38: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result] freopen("nisip.out", "w", stdout); ^ nisip.cpp:52:26: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d%d", &n, &m); ^ nisip.cpp:65:36: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d", &cells[i].type); ^ nisip.cpp:98:39: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d%d%d", &task, &x, &y); ^ nisip.cpp:110:53: warning: 'last_del_y' may be used uninitialized in this function [-Wmaybe-uninitialized] int next_pos = find(last_del_y, next); ^
| Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
|---|---|---|---|---|---|---|
| 1 | 0 secunde | OK. | 10 | 10 | ||
| 2 | 0 secunde | OK. | 10 | 10 | ||
| 3 | 0 secunde | OK. | 10 | 10 | ||
| 4 | 0 secunde | OK. | 10 | 10 | ||
| 5 | 0 secunde | OK. | 10 | 10 | ||
| 6 | 0 secunde | OK. | 10 | 10 | ||
| 7 | 0.06 secunde | OK. | 10 | 10 | ||
| 8 | 0.06 secunde | OK. | 10 | 10 | ||
| 9 | 0.072 secunde | OK. | 10 | 10 | ||
| 10 | 0.188 secunde | OK. | 10 | 10 | ||
| Punctaj total | 100 | |||||
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema nisip 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ă.