Cod sursa(job #305545)

Utilizator petrecgClinciu Glisca Petre petrecg Data 17 aprilie 2009 19:23:11
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include <stdio.h>
long p,cost[15100],c,pos[15100],i,n,w,sol,j,max;
int main()
{freopen("energii.in","r",stdin);
 freopen("energii.out","w",stdout);
 scanf("%ld%ld",&n,&w);pos[0]=1;
 for(i=1;i<=n;++i)
  {scanf("%ld%ld",&p,&c);if(p>max)max=p;
   for(j=w;j>=0;--j)
    if(pos[j])
     if(pos[j+p]==0){pos[j+p]=1;cost[j+p]=cost[j]+c;}
      else
       if(cost[j]+c<cost[j+p])cost[j+p]=cost[j]+c;
  }
 sol=1000000004;
 for(i=w+max;i>=w;i--)
  if(pos[i]&&cost[i]<sol)sol=cost[i];
 if(sol==1000000004)printf("-1");else printf("%ld",sol);
 fclose(stdin);fclose(stdout);
 return 0;
}