Cod sursa(job #2427991)

Utilizator emadinuDinu Ema emadinu Data 3 iunie 2019 11:33:36
Problema Energii Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>

using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
 struct ura{
     int e,c;
 };
 ura v[1001];
 int s[15001];
int main()
{
    int g,w,i,energ,cost,max=0,maxx,j,min;
    in>>g>>w;
    for(i=1;i<=g;i++)
    {
        in>>energ>>cost;
        v[i].e=energ;
        v[i].c=cost;
        if(v[i].e>max)max=v[i].e;
    }
    maxx=0;
    for(i=1;i<=max+w;i++)
        s[i]=2000000000;
    for(i=1;i<=g;i++)
    {
            for(j=maxx;j>=1;j--)
                if(s[j]!=0)
                    if(j+v[i].e<=w+max)
                        if(s[j]+v[i].c<s[j+v[i].e])
                            s[j+v[i].e]=s[j]+v[i].c;
            if(maxx+v[i].e>w+max)
                maxx=w+max;
            else
                maxx=maxx+v[i].e;
            if(v[i].c<s[v[i].e])
                s[v[i].e]=v[i].c;
    }
    min=2000000000;
    for(i=w;i<=w+max;i++)
        if(s[i]<min&&s[i]!=0)
            min=s[i];
    if(min!=2000000000)
        out<<min;
    else
        out<<-1;
    return 0;
}