Detalii evaluare #40901549

Rezumat problemă

#1680 Sushi

După o zi productivă de făcut curățenie, Henry și Hetty au ieșit în oraș la un restaurant de sushi. În acest restaurant există N mese unite între ele prin N-1 benzi rulante cu dublu sens, astfel încât oricare două mese sunt conectate direct sau indirect prin benzi rulante. Pentru fiecare masă i, 1 ≤ i ≤ N, cunoaștem atât numărul K[i] de mese cu care este conectată direct, cât și lista ordonată de mese vecine acesteia: V[i,1], V[i,2]V[i,K[i]].

Benzile rulante au rolul de a transporta preparatele la clienți. Acestea urmează un traseu unic, definit după următoarea regulă: pentru orice masă i, un preparat aflat la masa i care tocmai a venit dinspre masa V[i,j], va pleca de la masa i spre masa:

  • V[i,j+1], dacă 1 ≤ j < K[i]
  • V[i,1], dacă j = K[i].

În plus, dacă un preparat nou este trimis de la masa 1 spre masa V[1,1], știm că acesta va ajunge la masa i pentru prima oară venind dinspre masa V[i,1], pentru orice i, 1 ≤ i ≤ N.

Henry și Hetty au intrat în restaurant la momentul de timp 0. Ei știu că pe parcursul vizitei lor pe benzile rulante vor fi așezate M preparate. Pentru fiecare din cele M preparate ei cunosc tripletul (x, y, t), semnificând faptul că la momentul de timp t preparatul va fi așezat pe bandă în dreptul mesei x pentru a pleca spre spre masa V[x,y]. Ei mai știu și că timpul necesar unui preparat de a parcurge distanța dintre două mese vecine este de o unitate. Cei doi se vor așeza la o masă și vor lua de pe bandă toate preparatele care trec prin dreptul mesei respective. Henry și Hetty se întreabă: pentru fiecare masă i, care este timpul minim după care culeg toate cele M preparate ce vor fi puse pe bandă?

ONI 2016, clasele XI-XII

Detalii

Problema Sushi Operații I/O sushi.in/sushi.out
Limita timp 0.8 secunde Limita memorie Total: 128 MB / Stivă 128 MB
Id soluție #40901549 Utilizator Darabaneanu Liviu Eugen (Darabaneanu_Liviu_Eugen)
Fișier sushi.cpp Dimensiune 3.22 KB
Data încărcării 02 Ianuarie 2023, 19:25 Scor / rezultat 100 puncte

Evaluare


Mesaj compilare

sushi.cpp: In function 'void dfs(int)':
sushi.cpp:51:56: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = (node == 1 ? 0 : 1) ; i < G[node].size() ; i++)

                                                        ^
sushi.cpp: In function 'void RMQ()':
sushi.cpp:63:32: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(i = 1 ; i < euler.size() ; i++)

                                ^
sushi.cpp:68:39: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(j = 1 ; (1 << j) < euler.size() ; j++)

                                       ^
sushi.cpp:69:51: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(i = 1 ; i + (1 << j) - 1 < euler.size() ; i++)

                                                   ^
sushi.cpp: In function 'int main()':
sushi.cpp:112:32: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(i = 1 ; i < euler.size() ; i++)

                                ^
sushi.cpp:140:35: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(j = 1 ; j < P[i].size() ; j++)

                                   ^
sushi.cpp:82:17: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   FastIO , FILES;

                 ^
sushi.cpp:82:17: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]

Rezultat evaluare

Test Timp Mesaj evaluare Scor posibil Scor obținut
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.004 secunde OK. 5 5
8 0.004 secunde OK. 5 5
9 0.096 secunde OK. 5 5
10 0.1 secunde OK. 5 5
11 0.172 secunde OK. 5 5
12 0.168 secunde OK. 5 5
13 0.208 secunde OK. 5 5
14 0.196 secunde OK. 5 5
15 0.232 secunde OK. 5 5
16 0.232 secunde OK. 5 5
17 0.248 secunde OK. 5 5
18 0.248 secunde OK. 5 5
19 0.248 secunde OK. 5 5
20 0.252 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 Sushi 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ă.