Cod sursa(job #933569)

Utilizator Master011Dragos Martac Master011 Data 30 martie 2013 10:00:52
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 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;
    fscanf(in,"%d%d",&n,&W);
    for(int i=1;i<=n;++i) fscanf(in,"%d%d",&P[i],&C[i]);

    for(int i=0;i<=W;++i) dim[i]=N*6;

    for(int i=1;i<=n;++i){
        for(int j=W-P[i]; j>=0; --j){
            if(dim[j])
                if(dim[j+P[i]]>dim[j]+C[i])
                    dim[j+P[i]]=dim[j]+C[i];
        }
        if(P[i]<=W && C[i]<dim[P[i]])
            dim[P[i]]=C[i];
    }

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