Cod sursa(job #933571)

Utilizator Master011Dragos Martac Master011 Data 30 martie 2013 10:06:39
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<cstdio>
using namespace std;
FILE *in,*out;

const int N = 1010;
int P[N],dim[N*6],C[N];

int main(){
    in=fopen("energii.in","r");
    out=fopen("energii.out","w");

    int n,W,a,b,nre=0;
    fscanf(in,"%d%d",&n,&W);
    for(int i=1;i<=n;++i){
        fscanf(in,"%d%d",&a,&b);
        if(a<=W){
            P[++nre]=a;
            C[nre]=b;
        }
    }
    int SS=N*6;
    for(int i=0;i<=W;++i) dim[i]=SS;
    dim[0]=0;
    for(int i=1;i<=nre;++i){
        for(int j=W-P[i]; j>=0; --j){
            if(dim[j]!=SS)
                if(dim[j+P[i]]>dim[j]+C[i])
                    dim[j+P[i]]=dim[j]+C[i];
        }
    }

    if(dim[W]==SS)
        fprintf(out,"-1");
    else fprintf(out,"%d",dim[W]);
    return 0;
}