#2675
scara1
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 | #48874313 | Utilizator | |
Fișier | scara1.cpp | Dimensiune | 1.18 KB |
Data încărcării | 08 Februarie 2024, 00:58 | Scor / rezultat | Eroare de compilare |
scara1.cpp:1:6: error: stray '#' in program scara#include <bits/stdc++.h> ^ scara1.cpp:1:1: error: 'scara' does not name a type scara#include <bits/stdc++.h> ^ scara1.cpp:3:13: error: expected type-specifier before 'pair' using pii = pair<int,int>; ^ scara1.cpp:8:1: error: 'ifstream' does not name a type ifstream f("scara.in"); ^ scara1.cpp:9:1: error: 'ofstream' does not name a type ofstream g("scara.out"); ^ scara1.cpp:14:1: error: 'pii' does not name a type pii dp[125]; ^ scara1.cpp:16:12: error: 'pii' was not declared in this scope bool check(pii x, pii y, int z){ ^ scara1.cpp:16:19: error: 'pii' was not declared in this scope bool check(pii x, pii y, int z){ ^ scara1.cpp:16:26: error: expected primary-expression before 'int' bool check(pii x, pii y, int z){ ^ scara1.cpp:16:31: error: expression list treated as compound expression in initializer [-fpermissive] bool check(pii x, pii y, int z){ ^ scara1.cpp:16:32: error: expected ',' or ';' before '{' token bool check(pii x, pii y, int z){ ^ scara1.cpp: In function 'int main()': scara1.cpp:23:5: error: 'f' was not declared in this scope f >> n; ^ scara1.cpp:24:66: error: 'min' was not declared in this scope f >> k; while (k--) {int x, y; f >> x >> y; a[x] = min(y, n-x);} ^ scara1.cpp:28:9: error: 'dp' was not declared in this scope dp[i].p = i, dp[i].c = 0; ^ scara1.cpp:34:23: error: 'dp' was not declared in this scope if (check(dp[i+j], dp[i], 0)){ ^ scara1.cpp:34:40: error: 'check' cannot be used as a function if (check(dp[i+j], dp[i], 0)){ ^ scara1.cpp:38:36: error: 'min' was not declared in this scope for (int j = min(n-i,2*e[i]); j; j--){ ^ scara1.cpp:40:23: error: 'dp' was not declared in this scope if (check(dp[i+j], dp[i], cst)){ ^ scara1.cpp:40:42: error: 'check' cannot be used as a function if (check(dp[i+j], dp[i], cst)){ ^ scara1.cpp:47:5: error: 'g' was not declared in this scope g << dp[n].p << ' ' << dp[n].c; ^ scara1.cpp:47:10: error: 'dp' was not declared in this scope g << dp[n].p << ' ' << dp[n].c; ^
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ă.