Cod sursa(job #217947)

Utilizator mihaipoascaPoasca Mihai mihaipoasca Data 30 octombrie 2008 23:03:25
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<stdio.h>

FILE *fin=fopen("energii.in","r"),
    *fout=fopen("energii.out","w");

int N,W,E[5005],C[5005],s[10000005],Nmax;
char uz[5005];

int main(){
    fscanf(fin,"%d %d",&N,&W);

    for(int i=1;i<=N;i++){
        fscanf(fin,"%d %d",&E[i],&C[i]);
        Nmax+=E[i];
    }

    if(Nmax<W){
        fprintf(fout,"-1\n");
        fclose(fin);
        fclose(fout);
        return 0;
    }

    for(int i=1;i<=Nmax;i++){

        for(int j=1;j<=N;j++)
            for(int k=0;E[j]+k<=i;k++)
                if(E[j]+k==i && (s[i]==0 || s[i]>C[j]+s[k]))
                    if(uz[j]==0){
                        s[i]=C[j]+s[k];
                        uz[j]=1;
                    }
    }


    int min=2000000000;
    for(int i=W;i<=Nmax;i++)
        if(s[i]&&s[i]<min)
            min=s[i];
    fprintf(fout,"%d\n",min);

    fclose(fin);
    fclose(fout);
    return 0;

}