#2056
Popcorn
C++
Cu toții știm că popcornul este o adevărată delicatesă culinară. În pregătirile tale pentru lotul de anul acesta (și pentru petrecerile de după), ai făcut comandă de N
tipuri de floricele de porumb pentru microunde. Fiecare tip are asociate 3
valori:
A[i]
= Timpul (în secunde) la care orice floricică de acel tip “pocnește”;B[i]
= Timpul (în secunde) la care orice floricică de acel tip “se arde”;C[i]
= Cantitatea (în floricele) a respectivului tip.Mai ai la dispoziție M
pungi pentru floricele de unică folosință de capacitate foarte mare (practic, infinită) și un cuptor cu microunde. Cum, bineînțeles, nimănui nu îi plac floricelele nefăcute sau cele arse, îți dorești să le partiționezi convenabil în cele M
pungi și apoi să le introduci pe rând în cuptorul cu microunde, setându-i un timp de preparare prep[i]
corespunzător, astfel încât după cele M
tranșe să obții cât mai multe floricele comestibile.
Formal, o floricică de tipul i
introdusă în punga j
, setată la timpul (în secunde) de preparare prep[j]
este comestibilă dacă și numai dacă A[i] ≤ prep[j] < B[i]
.
Fiind date cele N
tipuri de floricele și numărul de pungi disponibile, trebuie să găsești o partiție convenabilă și timpii optimi de preparare pentru fiecare pungă, astfel încât la final să obții numărul maxim de floricele comestibile, pe care să îl afișezi în fișierul de ieșire. Prea ușor!
Lot Covasna 2017
Problema | Popcorn | Operații I/O |
popcorn.in /popcorn.out
|
---|---|---|---|
Limita timp | 3 secunde | Limita memorie |
Total: 256 MB
/
Stivă 256 MB
|
Id soluție | #46363983 | Utilizator | |
Fișier | popcorn.cpp | Dimensiune | 2.85 KB |
Data încărcării | 11 Noiembrie 2023, 17:54 | Scor / rezultat | 100 puncte |
popcorn.cpp: In function 'std::pair<double, int> Evaluate2(double, std::vector<Range>&)': popcorn.cpp:71:36: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] while(cursor < ranges.size()) { ^ popcorn.cpp:65:14: warning: variable 'pp' set but not used [-Wunused-but-set-variable] auto pp = DP[dsu.Find(0)]; ^ popcorn.cpp:68:13: warning: unused variable 'at' [-Wunused-variable] int at = e + 1; ^
Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
---|---|---|---|---|---|---|
0 | 0 secunde | OK. | 5 | 5 | ||
1 | 0 secunde | OK. | 5 | 5 | ||
2 | 0.004 secunde | OK. | 5 | 5 | ||
3 | 0.004 secunde | OK. | 5 | 5 | ||
4 | 0.004 secunde | OK. | 5 | 5 | ||
5 | 0.004 secunde | OK. | 5 | 5 | ||
6 | 0.028 secunde | OK. | 5 | 5 | ||
7 | 0.028 secunde | OK. | 5 | 5 | ||
8 | 0.028 secunde | OK. | 5 | 5 | ||
9 | 0.028 secunde | OK. | 5 | 5 | ||
10 | 0.028 secunde | OK. | 5 | 5 | ||
11 | 0.028 secunde | OK. | 5 | 5 | ||
12 | 0.228 secunde | OK. | 5 | 5 | ||
13 | 0.308 secunde | OK. | 5 | 5 | ||
14 | 0.272 secunde | OK. | 5 | 5 | ||
15 | 0.096 secunde | OK. | 5 | 5 | ||
16 | 0.056 secunde | OK. | 5 | 5 | ||
17 | 0.1 secunde | OK. | 5 | 5 | ||
18 | 0.224 secunde | OK. | 5 | 5 | ||
19 | 0.524 secunde | OK. | 5 | 5 | ||
Punctaj total | 100 |
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Popcorn 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ă.