Cod sursa(job #1068987)

Utilizator TarabanDragosTaraban Dragos-Petru TarabanDragos Data 29 decembrie 2013 03:37:50
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<cstdio>
int n,s,x[1001][5001],e[1001],c[1001],i,j;
FILE *f,*g;
int main(){
    f=fopen("energii.in","r");
    g=fopen("energii.out","w");
    fscanf(f,"%d%d",&n,&s);
    for(i=1;i<=n;i++){
        fscanf(f,"%d%d",&e[i],&c[i]);
        for(j=1;j<=s;j++){
            x[i][j]=2000000000;
        }
    }
    for(i=1;i<=n;i++){
        for(j=1;j<=s;j++){
            if(e[i]<j){
                if(x[i-1][j]>x[j-1][j-e[i]]+c[i])
                    x[i][j]=x[i-1][j];
                else
                    x[i][j]=x[j-1][j-e[i]]+c[i];
            }
            else{
                if(x[i-1][j]>c[i])
                    x[i][j]=x[i-1][j];
                else
                    x[i][j]=c[i];
            }
        }
    }
    if(x[n][s]==2000000000)
        fprintf(g,"-1");
    else
        fprintf(g,"%d",x[n][s]);

    fclose(f);
    fclose(g);
    return 0;
}