Detalii evaluare #51834577

Rezumat problemă

#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.

Detalii

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 #51834577 Utilizator 7B Jalba Elena (elena_jalba)
Fișier lasere.cpp Dimensiune 3.14 KB
Data încărcării 27 August 2024, 13:43 Scor / rezultat 30 puncte

Evaluare


Mesaj compilare

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;

              ^

Rezultat evaluare

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 Raspuns gresit. 5 0
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 30

Cum funcționează evaluarea?

www.pbinfo.ro permite evaluarea a două tipuri de probleme:

  • probleme la care rezolvarea presupune scrierea unui program complet
  • probleme la care rezolvarea presupune scrierea unei secvențe de program - câteva instrucțiuni, o listă de declarații, una sau mai multe funcții, etc.

Problema Lasere face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:

  • Programul sursă este compilat folosind compilatorul corespunzător. Dacă în urma compilării se obțin erori sau avertismente, acestea sunt afișate în această pagină.
  • Dacă programul a fost compilat, executabilul obținut va fi rulat, furnizându-i-se unul sau mai multe seturi de date de intrare, în concordanță cu restricțiile specifice problemei. Pentru fiecare set de date se obține un anumit punctaj, în raport cu corectitudinea soluției tale.

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ă.