Pagini recente » Cod sursa (job #1574911) | Cod sursa (job #1625234) | Cod sursa (job #348737) | Cod sursa (job #775543) | Cod sursa (job #107078)
Cod sursa(job #107078)
#include<stdio.h>
FILE*f,*g;
int i,j,n,max,w,min,eg[1002],cg[1002],a[1000000],b[1000000];
int main(void)
{
f=fopen("energii.in","r");
g=fopen("energii.out","w");
fscanf(f,"%d%d",&n,&w);
for(i=1;i<=n;i++)
fscanf(f,"%d%d",&eg[i],&cg[i]);
max=0;
a[0]=0;
b[0]=1;
for(i=1;i<=n;i++)
for(j=max;j>=0;j--)
if(b[j]&&j<w)
{
if(b[j+eg[i]]==0)
{
b[j+eg[i]]=1;
a[j+eg[i]]=a[j]+cg[i];
if(j+eg[i]>max)
max=j+eg[i];
}
else
if(a[j]+cg[i]<a[j+eg[i]])
a[j+eg[i]]=a[j]+cg[i];
}
min=32000;
for(i=max;i>=w;i--)
if(b[i]==1)
if(a[i]<min)
min=a[i];
if(min!=32000)
fprintf(g,"%d\n",min);
else
fprintf(g,"-1\n");
fclose(f);
fclose(g);
return 0;
}