Pagini recente » Cod sursa (job #1688034) | Cod sursa (job #712466) | Cod sursa (job #1010493) | Cod sursa (job #2039853) | Cod sursa (job #43687)
Cod sursa(job #43687)
#include<stdio.h>
#define maxN 1001
#define maxW 5001
#define inf 10000001
long W,N,E[maxN],C[maxN],c1[maxW],MIN,c2[maxW];
int main ()
{long i,j;
freopen("energii.out","w",stdout);
freopen("energii.in","r",stdin);
scanf("%ld\n%ld\n",&N,&W);
for(i=1;i<=W;i++) c1[i]=inf;
MIN=0;
for(i=1;i<=N;i++)
{scanf("%ld %ld\n",&E[i],&C[i]);
MIN+=E[i];
}
if(MIN<W) printf("-1\n");
else
{for(i=1;i<=N;i++)
{ for(j=0;j<=W;j++)
c2[j]=c1[j];
for(j=0;j<=W;j++)
if(j+E[i]>W){ if((c1[W]>c1[j]+C[i]) && (c2[W]>c1[j]+C[i])) c2[W]=c1[j]+C[i];}
else if((c1[j+E[i]]>c1[j]+C[i]) && (c2[j+E[i]]>c1[j]+C[i] )) c2[j+E[i]]=c1[j]+C[i];
for(j=1;j<=W;j++)
c1[j]=c2[j];
}
printf("%ld\n",c2[W]);
}
return 0;}