Cod sursa(job #1534691)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 23 noiembrie 2015 21:38:06
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <cstdio>
#define MAXG 1000
#define MAXW 5000
#define INF 1000000000
int d[MAXW+1],E[MAXG],C[MAXG];
inline int min(int a,int b){
    if(a<b) return a;
    return b;
}
int main(){
    FILE*fi,*fout;
    int i,j,n,G,W;
    fi=fopen("energii.in" ,"r");
    fout=fopen("energii.out" ,"w");
    fscanf(fi,"%d%d" ,&G,&W);
    for(i=0;i<G;i++)
       fscanf(fi,"%d%d" ,&E[i],&C[i]);
    for(i=1;i<=W;i++)
       d[i]=INF;
    for(i=0;i<G;i++){
        for(j=W;j>=0;j--)
          if(E[i]+j>W)
             d[W]=min(d[W],d[j]+C[i]);
          else
             d[j+E[i]]=min(d[j+E[i]],d[j]+C[i]);
    }
    if(d[W]==INF)
      fprintf(fout,"-1");
    else
      fprintf(fout,"%d" ,d[W]);
    fclose(fi);
    fclose(fout);
    return 0;
}