#1142
Lasere
Se consideră un teren reprezentat printr-o matrice cu n
linii şi n
coloane având elemente numere naturale. În fiecare element al matricei este memorată înălţimea zonei de teren corespunzătoare ca poziţie elementului respectiv. Pe acest teren sunt amplasate m
lasere, în poziţii cunoscute. Un laser este îndreptat spre unul dintre cele 4
puncte cardinale, codificate prin numere astfel: Nord
prin valoarea 1
, Est
prin valoarea 2
, Sud
prin valoarea 3
şi respectiv Vest
prin valoarea 4
. Fiecare laser va executa o singură tragere şi ca urmare va scădea cu 1
valorile tuturor elementelor din matrice din direcţia sa de tragere, exceptând poziţia laserului respectiv.
După efectuarea tuturor tragerilor, se caută poziţiile tuturor gropilor şi ale tranşeelor.
Numim groapă un element din matrice pentru care toate cele 8
elemente învecinate pe linie, coloană sau diagonale au valori mai mari sau egale decât el.
Numim tranşee o secvenţă maximală formată din două sau mai multe gropi situate pe aceeaşi linie, pe coloane consecutive. Secvenţa se numeşte maximală dacă nu mai poate fi prelungită la niciunul dintre capete.
Cunoscând configuraţia terenului şi amplasarea laserelor, să se rezolve una dintre următoarele două cerinţe:
1. să se determine numărul de gropi din teren, după executarea tragerilor;
2. să se determine numărul de tranşee existente, după executarea tragerilor.
OJI 2015, Clasa a VII-a
Problema | Lasere | Operații I/O |
lasere.in /lasere.out
|
---|---|---|---|
Limita timp | 0.2 secunde | Limita memorie |
Total: 8 MB
/
Stivă 4 MB
|
Id soluție | #51834568 | Utilizator | |
Fișier | lasere.cpp | Dimensiune | 3.14 KB |
Data încărcării | 27 August 2024, 13:42 | Scor / rezultat | 35 puncte |
lasere.cpp: In function 'int main()': lasere.cpp:124:29: warning: suggest parentheses around comparison in operand of '==' [-Wparentheses] if (a[i][j] == a[i][j + 1] == 10000) ^ lasere.cpp:128:36: warning: suggest parentheses around comparison in operand of '==' [-Wparentheses] while (a[i][j] == a[i][j + 1] == 10000 && j <= n) ^ lasere.cpp:71:13: warning: variable 'nr' set but not used [-Wunused-but-set-variable] int nr, l, d, s, tr; ^ lasere.cpp:72:14: warning: variable 'ok' set but not used [-Wunused-but-set-variable] bool ok; ^
Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
---|---|---|---|---|---|---|
0 | 0 secunde | OK. | 5 | 5 | ||
1 | 0 secunde | OK. | 5 | 5 | ||
2 | 0 secunde | OK. | 5 | 5 | ||
3 | 0 secunde | OK. | 5 | 5 | ||
4 | 0.004 secunde | OK. | 5 | 5 | ||
5 | 0 secunde | OK. | 5 | 5 | ||
6 | 0 secunde | Raspuns gresit. | 5 | 0 | ||
7 | 0 secunde | Raspuns gresit. | 5 | 0 | ||
8 | 0 secunde | Raspuns gresit. | 5 | 0 | ||
9 | 0 secunde | Raspuns gresit. | 5 | 0 | ||
10 | 0 secunde | Raspuns gresit. | 5 | 0 | ||
11 | 0 secunde | OK. | 5 | 5 | ||
12 | 0.004 secunde | Raspuns gresit. | 5 | 0 | ||
13 | 0.004 secunde | Raspuns gresit. | 5 | 0 | ||
14 | 0 secunde | Raspuns gresit. | 10 | 0 | ||
15 | 0 secunde | Raspuns gresit. | 10 | 0 | ||
16 | 0 secunde | Raspuns gresit. | 10 | 0 | ||
Punctaj total | 35 |
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Lasere 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ă.