Cod sursa(job #3356239)

Utilizator veronica_stanciuStanciu Veronica veronica_stanciu Data 30 mai 2026 13:45:08
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <fstream>
#include <vector>

using namespace std;
ifstream cin("energii.in");
ofstream cout("energii.out");

short int e[10002], c[10002];
vector<int> cost(10000005, 15005);
int main()
{
    int g, w, smax, mini=10000005;
    cin>>g>>w;
    for(int i=1; i<=g; i++)
        cin>>e[i]>>c[i];
    cost[0]=0;
    smax=0;




    for(int i=1; i<=g; i++){
        for(int j=smax; j>=0; j--)
            if(cost[j]!=10000005 && j+e[i]<=15005){
                //cout<<" cost[j] initial: "<<cost[j];
                if(cost[j]+c[i]<cost[j+e[i]]){
                    cost[j+e[i]]=cost[j]+c[i];
                    if(cost[j+e[i]]<mini && j+e[i]>=w)
                        mini=cost[j+e[i]];
                }
                //cout<<" cost[j] schimbat: "<<cost[j+e[i]]<<endl;
            }
        if(smax+e[i]<=15005)
            smax+=e[i];
        else
            smax=15005;
    }
    /*
    cout<<"smax: "<<smax<<endl;
    for(int i=0; i<=smax; i++)
        cout<<i<<" "<<cost[i]<<endl;
        */
    if(mini!=10000005)
        cout<<mini;
    else
        cout<<-1;
    return 0;
}