Cod sursa(job #1804393)

Utilizator TibiraducanuTiberiu Raducanu Tibiraducanu Data 12 noiembrie 2016 15:29:07
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <cstdio>

using namespace std;

const int G=10010,Inf=(1<<30);
int n,g,x,c,d[G],i,j;

int main()
{
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);

    int minn=Inf;
    scanf("%d%d",&n,&g);
    d[0]=1;
    for(i=1;i<=2*g;i++) d[i]=Inf;

    for(i=1;i<=n;i++){
        scanf("%d%d",&x,&c);
        if(x>=g and c<=minn){
            minn=c+1;
            continue;
        }

        for(int j=g-1;j>=0;j--){
            if(d[j]!=Inf){
                if(d[j]+c<d[j+x])
                    d[j+x]=d[j]+c;
            }
        }
    }

    for(i=g;i<=2*g;i++)
        if(d[i]<minn) minn=d[i];

    if(minn==Inf) minn=0;
    printf("%d\n",minn-1);


    return 0;
}