Cod sursa(job #2659372)

Utilizator NastureNasture Anca Nasture Data 16 octombrie 2020 18:01:02
Problema Energii Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <fstream>
#define MAX 1000000000

using namespace std;

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

struct ura
{
    int e,c;
};
ura v[1001];

int suma[15001];

int main()
{
    int i,n,maxi, W, j,pozmax, pp, gasit;
    cin>>n>>W;
    maxi=0;
    for(i=1;i<=n;i++)
    {
        cin>>v[i].e>>v[i].c;
        if(v[i].e>maxi)
            maxi=v[i].e;
    }
    maxi=15000;
    for(i=1;i<=maxi;i++)
        suma[i]=MAX;
    pozmax=0;
    for(i=1;i<=n;i++)
    {
        for(j=maxi;j>=1;j--)
            if(suma[j]!=MAX)
                if(j+v[i].e <= maxi)
                    if(suma[j+v[i].e]>suma[j]+v[i].c)
                        suma[j+v[i].e]=suma[j]+v[i].c;

        if(suma[v[i].e]>v[i].c)
            suma[v[i].e]=v[i].c;
    }
    pp=1;
    if(suma[W]!=MAX)
    {
        pp=0;
        cout<<suma[W];
    }
    else
    {
        i=W+1;
        gasit=0;
        while(i<=maxi && gasit==0)
            if(suma[i]!=MAX)
            {
                cout<<suma[i];
                gasit=1;
            }
            else
                i++;
        if(gasit==1)
            pp=0;
    }
    if(pp==1)
        cout<<-1;
    return 0;
}