#2675
Domnul G are de urcat o scară cu n
trepte. În mod normal, la fiecare pas pe care îl face, el urcă o treaptă. Pe k
dintre aceste trepte se află câte o sticlă cu un număr oarecare de decilitri de apă, fie acesta x
. Dacă bea toată apa dintr-o astfel de sticlă, forța și mobilitatea lui G cresc, astfel încât, la următorul pas el poate urca până la x
trepte, după care, dacă nu bea din nou ceva, revine la “normal”. Sticlele cu apă nu costă nimic. Cantitatea de apă conținută de aceste sticle poate să difere de la o treaptă la alta.
Pe j
trepte se află câte o sticlă cu băutura energizantă. Şi pentru aceste sticle, cantitatea de băutură energizantă poate să difere de la o treaptă la alta. Să presupunem că într-una dintre aceste sticle avem y
decilitri de băutură energizantă. Dacă bea q
(q ≤ y
) decilitri dintr-o astfel de sticlă, la următorul pas G poate urca până la 2q
trepte, după care şi în acest caz, dacă nu bea din nou ceva, el revine la “normal”. Însă băutura energizantă costă: pentru o cantitate de q
decilitri consumaţi, G trebuie să plătească q
lei grei.
Pot exista trepte pe care nu se află nici un pahar, dar şi trepte pe care se află atât o sticlă cu apă cât şi una cu băutură energizantă. În astfel de situaţii, nu are rost ca G să bea ambele băuturi deoarece efectul lor nu se cumulează; el poate alege să bea una dintre cele două băuturi sau poate să nu bea nimic.
Determinaţi p
, numărul minim de paşi pe care trebuie să îi facă G pentru a urca scara, precum şi suma minimă pe care trebuie să o cheltuiască G pentru a urca scara în p
paşi.
OJI 2005, clasele XI-XII
Problema | scara1 | Operații I/O |
![]() scara.in /scara.out
|
---|---|---|---|
Limita timp | 0.1 secunde | Limita memorie |
Total: 64 MB
/
Stivă 8 MB
|
Id soluție | #57080506 | Utilizator | |
Fișier | scara1.cpp | Dimensiune | 3.00 KB |
Data încărcării | 15 Martie 2025, 00:01 | Scor / rezultat | Eroare de compilare |
scara1.cpp: In function 'int main()': scara1.cpp:33:89: error: wrong number of template arguments (0, should be 1) priority_queue<tuple<int, int, int, int>, vector<tuple<int, int, int, int>>, greater<>> heap; ^ In file included from /usr/include/c++/4.8/string:48:0, from /usr/include/c++/4.8/bits/locale_classes.h:40, from /usr/include/c++/4.8/bits/ios_base.h:41, from /usr/include/c++/4.8/ios:42, from /usr/include/c++/4.8/istream:38, from /usr/include/c++/4.8/sstream:38, from /usr/include/c++/4.8/complex:45, from /usr/include/c++/4.8/ccomplex:38, from /usr/include/i386-linux-gnu/c++/4.8/bits/stdc++.h:52, from scara1.cpp:1: /usr/include/c++/4.8/bits/stl_function.h:222:12: error: provided for 'template<class _Tp> struct std::greater' struct greater : public binary_function<_Tp, _Tp, bool> ^ scara1.cpp:33:90: error: template argument 3 is invalid priority_queue<tuple<int, int, int, int>, vector<tuple<int, int, int, int>>, greater<>> heap; ^ scara1.cpp:33:97: error: invalid type in declaration before ';' token priority_queue<tuple<int, int, int, int>, vector<tuple<int, int, int, int>>, greater<>> heap; ^ scara1.cpp:34:10: error: request for member 'push' in 'heap', which is of non-class type 'int' heap.push({0, 0, 0, 1}); ^ scara1.cpp:39:18: error: request for member 'empty' in 'heap', which is of non-class type 'int' while (!heap.empty()) { ^ scara1.cpp:40:14: error: expected unqualified-id before '[' token auto [current_steps, current_cost, pos, buff] = heap.top(); ^ scara1.cpp:41:14: error: request for member 'pop' in 'heap', which is of non-class type 'int' heap.pop(); ^ scara1.cpp:43:13: error: 'current_steps' was not declared in this scope if (current_steps > steps[pos][buff] || (current_steps == steps[pos][buff] && current_cost > costs[pos][buff])) continue; ^ scara1.cpp:43:35: error: 'pos' was not declared in this scope if (current_steps > steps[pos][buff] || (current_steps == steps[pos][buff] && current_cost > costs[pos][buff])) continue; ^ scara1.cpp:43:40: error: 'buff' was not declared in this scope if (current_steps > steps[pos][buff] || (current_steps == steps[pos][buff] && current_cost > costs[pos][buff])) continue; ^ scara1.cpp:43:87: error: 'current_cost' was not declared in this scope if (current_steps > steps[pos][buff] || (current_steps == steps[pos][buff] && current_cost > costs[pos][buff])) continue; ^ scara1.cpp:44:13: error: 'current_steps' was not declared in this scope if (current_steps > min_steps) continue; ^ scara1.cpp:46:30: error: 'buff' was not declared in this scope for (int m = 1; m <= buff; ++m) { ^ scara1.cpp:47:27: error: 'pos' was not declared in this scope int new_pos = pos + m; ^ scara1.cpp:50:35: error: 'current_steps' was not declared in this scope int total_steps = current_steps + 1; ^ scara1.cpp:51:34: error: 'current_cost' was not declared in this scope int total_cost = current_cost; ^ scara1.cpp:78:23: error: expected unqualified-id before '[' token for (auto [next_buff, added_cost] : options) { ^ scara1.cpp:78:23: error: expected ';' before '[' token scara1.cpp:78:24: error: 'next_buff' was not declared in this scope for (auto [next_buff, added_cost] : options) { ^ scara1.cpp:78:35: error: 'added_cost' was not declared in this scope for (auto [next_buff, added_cost] : options) { ^ scara1.cpp: In lambda function: scara1.cpp:78:47: error: expected '{' before ':' token for (auto [next_buff, added_cost] : options) { ^ scara1.cpp: In function 'int main()': scara1.cpp:78:47: error: expected ';' before ':' token scara1.cpp:78:47: error: expected primary-expression before ':' token scara1.cpp:78:47: error: expected ')' before ':' token scara1.cpp:78:47: error: expected primary-expression before ':' token scara1.cpp:78:47: error: expected ';' before ':' token scara1.cpp:98:1: error: expected '}' at end of input } ^ scara1.cpp:98:1: error: expected '}' at end of input scara1.cpp:98:1: error: expected '}' at end of input
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema scara1 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ă.