Detalii evaluare #36520422

Rezumat problemă

Misiunea robotului Curiosity este de-a trimite imagini și informații către satelitul plasat pe orbita planetei Marte. Zona de explorare a robotului este de-a lungul unei axe de coordonate Ox. Robotul este înzestrat cu o baterie solară de capacitate energetică maximă C și consumă pentru fiecare unitate de drum parcurs o unitate de energie. Coordonata punctului de plecare al incursiunii robotului (raportată la origine x=0) este Xs, iar punctul unde este finalizat studiul are coordonata Xf.
Totodată, cercetătorii au stabilit N puncte ce fac posibilă încărcarea bateriilor robotului, numerotate de la 1 la N. În funcție de intensitatea luminii solare primite, reflectată în durata de încărcare a bateriei, punctele de încărcare sunt de trei tipuri: tipul 1–intensitate minimă/timp de încărcare mare, tipul 2–intensitate medie/timp de încărcare mediu, tipul 3–intensitate maximă/timp de încărcare scurt. Altfel, fiecare punct de încărcare i este descris prin perechea t[i] x[i], adică tipul de încărcare, respectiv poziția acestuia pe axă. În orice punct de încărcare robotul poate decide dacă încarcă sau nu bateria, cu unități de energie, nu mai mult decât capacitatea maximă. Robotul se poate deplasa dintr-un punct atât în stânga cât și în dreapta pe axă.
Pentru a scurta durata parcurgerii distanței către punctul final se dorește determinarea unei strategi optime a opririlor pentru încărcarea bateriilor, astfel încât cantitatea totală de energie încărcată în puncte de tipul 1 să fie minimă. În cazul în care sunt mai multe strategii de oprire pentru care cantitatea totală de energie încărcată în puncte de tipul 1 este minimă, atunci se va alege strategia pentru care cantitatea totală de energie încărcată în puncte de tipul 2 să fie minimă.

Dacă se cunosc Xs, Xf, C, precum și descrierea celor N puncte de încărcare să se determine o strategie de deplasare între coordonatele Xs și Xf, optimă din punct de vedere al timpului necesar încărcării bateriilor.

Detalii

Problema curiosity Operații I/O curiosity.in/curiosity.out
Limita timp 0.1 secunde Limita memorie Total: 128 MB / Stivă 8 MB
Id soluție #36520422 Utilizator Calescu Puiu Aurelian (pacal)
Fișier curiosity.cpp Dimensiune 1.98 KB
Data încărcării 06 Mai 2022, 16:02 Scor / rezultat 100 puncte

Evaluare


Mesaj compilare

curiosity.cpp: In function 'pii find(std::vector<std::pair<int, int> >)':
curiosity.cpp:37:39: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int q, r, i = 1; i < v.size() - 1; i++) {

                                       ^
curiosity.cpp:39:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while(p < v.size() - 1 && v[p + 1].first <= v[i].first + C)

                          ^
curiosity.cpp:37:11: warning: unused variable 'q' [-Wunused-variable]
   for(int q, r, i = 1; i < v.size() - 1; i++) {

           ^
curiosity.cpp:37:14: warning: unused variable 'r' [-Wunused-variable]
   for(int q, r, i = 1; i < v.size() - 1; i++) {

              ^
curiosity.cpp:36:16: warning: unused variable 'last' [-Wunused-variable]
   int cap = C, last = v[0].first, p = 0;

                ^

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 secunde OK. 5 5
5 0 secunde OK. 5 5
6 0 secunde OK. 5 5
7 0 secunde OK. 5 5
8 0 secunde OK. 5 5
9 0 secunde OK. 5 5
10 0.008 secunde OK. 5 5
11 0.012 secunde OK. 5 5
12 0.016 secunde OK. 5 5
13 0.024 secunde OK. 5 5
14 0.02 secunde OK. 5 5
15 0.008 secunde OK. 5 5
16 0.008 secunde OK. 5 5
17 0.016 secunde OK. 5 5
18 0.012 secunde OK. 5 5
19 0.012 secunde OK. 5 5
Punctaj total 100

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