Cerința
Gigel a aflat care este este secretul succesului în afacerile cu pinguini: să cumperi ieftin și să vinzi scump. El a reușit să afle care vor fi prețurile de vânzare a pinguinilor pe o perioadă de n
zile. În plus, Gigel dispune de o sumă de bani S
, și este hotărât să procedeze astfel: într-o zi va cumpăra numărul maxim posibil de pinguini la prețul din ziua respectivă, iar în altă zi îi va vinde pe toți pe prețul din acea zi. Determinați suma maximă pe care o poate deține Gigel după efectuarea acestor tranzacții.
Date de intrare
Programul citește de la tastatură numerele n S
, iar apoi n
numere naturale, reprezentând prețul unui pinguin în fiecare dintre cele n
zile.
Date de ieșire
Programul va afișa pe ecran numărul M
, reprezentând suma maximă pe care o poate deține Gigel în urma tranzacțiilor.
Restricții și precizări
1 ≤ n ≤ 1000
- atât
S
, cât și celen
numere citite vor fi nenule și mai mici decât10.000
; - toate prețurile sunt exprimate în aceleași unități monetare;
- dacă Gigel nu poate obține profit, interesul său este să minimizeze paguba.
Exemplu
Intrare
5 11 3 2 3 5 1
Ieșire
26
Explicație
Gigel va cumpăra 5
pinguini în ziua 2
și îi va vinde în ziua 4
. După tranzacții, va avea 1 + 5 * 5 = 26
unități monetare.
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema Succes:
//problema succes
/*
* Vom determina pentru fiecare zi de cumparare i ziua j (j>i) in care vanzarea se va face la pretul maxim, si vom determina maximul posibil
* Daca pentru nici o pereche i j suma existenta nu creste, ea va ramane aceeasi
*
* */
#include <iostream>
using namespace std;
int v[1005], n, S;
int main(){
cin >> n >> S;
for(int i = 0 ; i < n ; ++i)
cin >> v[i];
int smax = S;
for(int i = 0 ; i < n ; ++i)
{
int pmax = i + 1;
for(int j = i + 1; j < n ; ++j)
if(v[j] > v[pmax])
pmax = j;
int cnt = S/v[i];
int sc = S % v[i] + cnt * v[pmax];
if(sc > smax)
smax = sc;
}
cout << smax << "
";
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #564 Succes
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #564 Succes de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!