Cod sursa(job #138002)

Utilizator perticas_catalinperticas catalin perticas_catalin Data 17 februarie 2008 19:17:43
Problema Energii Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<stdio.h>
FILE*fin=fopen("energii.in","r");
FILE*fout=fopen("energii.out","w");
#define inf 1000000000
int main()
{
  int vt=0,n,rez[15001],min,i,j,vol,e[1001],c[1001];
  fscanf(fin,"%d",&n);
  fscanf(fin,"%d",&vol);
  for(i=1;i<=n;i++)
  {
    fscanf(fin,"%d%d",&e[i],&c[i]);
    vt+=e[i];
  }
  if(vt>15000) vt=15000;
  fclose(fin);
  if(vol>vt){fprintf(fout,"%d",-1);fclose(fout);}
  rez[0]=0;
  for(i=1;i<=vt;i++)
    rez[i]=inf;
  for(i=1;i<=n;i++)
    for(j=vt;j>=e[i];j--)
      if(rez[j-e[i]]+c[i]<rez[j]) rez[j]=rez[j-e[i]]+c[i];
  min=inf;
  for(i=vol;i<=vt;i++)
    if(rez[i]<min) min=rez[i];
  fprintf(fout,"%d",min);
  fclose(fout);
  return 0;
}