#2977
poarta1
Sindbad a descoperit un recipient care conține o poțiune magică și o inscripție care descrie cum se poate deschide poarta unui templu. Urmând instrucțiunile din inscripție, Sindbad a ajuns la un tunel acoperit cu dale pătrate, aliniate astfel încât formează linii și coloane. Tunelul are mai multe linii, iar pe fiecare linie sunt câte N
dale. Dalele din tunel sunt numerotate începând cu 1
, astfel încât, parcurgându-le linie cu linie și fiecare linie de la stânga la dreapta, se obține un șir strict crescător de numere naturale consecutive.
Sindbad se află la intrare, înaintea primei linii. Pentru a deschide poarta templului, el trebuie să ajungă pe dala numerotată cu P
, călcând pe un număr minim de dale. Dacă există mai multe astfel de soluții, o va alege pe cea pentru care consumul total de picături de poțiune magică este minim.
Scrieți un program care citește valorile N
și P
și rezolvă următoarele cerințe:
1. afișează numărul minim de dale pe care trebuie să calce pentru a deschide poarta;
2. afișează numărul natural T
, reprezentând numărul minim de picături de poțiune magică necesare pentru deschiderea porții.
OJI 2019
Problema | poarta1 | Operații I/O |
poarta.in /poarta.out
|
---|---|---|---|
Limita timp | 0.1 secunde | Limita memorie |
Total: 8 MB
/
Stivă 4 MB
|
Id soluție | #47335199 | Utilizator | |
Fișier | poarta1.cpp | Dimensiune | 2.97 KB |
Data încărcării | 10 Decembrie 2023, 12:47 | Scor / rezultat | 25 puncte |
poarta1.cpp: In function 'int main()': poarta1.cpp:20:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if(nrcif<strlen(N)) dalmin++, Pcif[nrcif-1]=-1, ok=1; //daca numarul de cifre a lui P este mai mic decat al lui N, atunci ^ poarta1.cpp:23:37: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if(nrcif-q==strlen(N)){ //daca numaruul de cifre a lui P este egal cu cel al lui N ^ poarta1.cpp:25:55: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(i=q, j=0;i<nrcif && j<strlen(N) && linia1==1;i++, j++){ //in realitate, i si j sunt contoare egale ^ poarta1.cpp:26:34: warning: array subscript has type 'char' [-Wchar-subscripts] if(Pcif[q]>N[j]-'0') linia1=0; //daca cifra nr i a lui P este mai mare decat cea nr j a lui N, atunci P nu se afla pe linia 1 ^ poarta1.cpp:26:39: warning: array subscript has type 'char' [-Wchar-subscripts] if(Pcif[q]>N[j]-'0') linia1=0; //daca cifra nr i a lui P este mai mare decat cea nr j a lui N, atunci P nu se afla pe linia 1 ^ poarta1.cpp:28:39: warning: array subscript has type 'char' [-Wchar-subscripts] else if(Pcif[q]<N[j]-'0') linia1=2; //daca o cifra nr. i a lui P este mai mica decat cea nr. j a lui N, atunci ^ poarta1.cpp:28:44: warning: array subscript has type 'char' [-Wchar-subscripts] else if(Pcif[q]<N[j]-'0') linia1=2; //daca o cifra nr. i a lui P este mai mica decat cea nr. j a lui N, atunci ^ poarta1.cpp:34:15: warning: suggest explicit braces to avoid ambiguous 'else' [-Wparentheses] if(!ok) //daca P nu se afla pe linia1 ^
Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
---|---|---|---|---|---|---|
1 | 0 secunde | Raspuns gresit. | 5 | 0 | ||
2 | 0 secunde | OK. | 5 | 5 | ||
3 | 0 secunde | Raspuns gresit. | 5 | 0 | ||
4 | 0 secunde | Raspuns gresit. | 5 | 0 | ||
5 | 0 secunde | Raspuns gresit. | 5 | 0 | ||
6 | 0 secunde | Raspuns gresit. | 5 | 0 | ||
7 | 0 secunde | OK. | 5 | 5 | ||
8 | 0 secunde | Raspuns gresit. | 5 | 0 | ||
9 | 0 secunde | Raspuns gresit. | 5 | 0 | ||
10 | 0 secunde | Raspuns gresit. | 5 | 0 | ||
11 | Depășit | Limita de timp depășită | 5 | 0 | ||
12 | 0 secunde | Raspuns gresit. | 5 | 0 | ||
13 | 0 secunde | Raspuns gresit. | 5 | 0 | ||
14 | 0 secunde | Raspuns gresit. | 5 | 0 | ||
15 | 0 secunde | Raspuns gresit. | 5 | 0 | ||
16 | 0 secunde | OK. | 5 | 5 | ||
17 | Depășit | Limita de timp depășită | 5 | 0 | ||
18 | 0 secunde | Raspuns gresit. | 5 | 0 | ||
19 | 0 secunde | OK. | 5 | 5 | Exemplu | |
20 | 0 secunde | OK. | 5 | 5 | Exemplu | |
Punctaj total | 25 |
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema poarta1 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ă.