Rezolvare completă PbInfo #564 Succes

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 cele n numere citite vor fi nenule și mai mici decât 10.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 Adresa de email.

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!