Pagini recente » Cod sursa (job #2050942) | Cod sursa (job #607489) | Cod sursa (job #1511742) | Cod sursa (job #1686510) | Cod sursa (job #417521)
Cod sursa(job #417521)
#include <stdio.h>
int n,w,a[1001],b[1001],i,j,max;
long long dp[20001],s,mx=1000000000;
FILE *f=fopen("energii.in","r"),*g=fopen("energii.out","w");
int main(void)
{
fscanf(f,"%d%d",&n,&w);
for (i=1;i<=n;i++)
{ fscanf(f,"%d%d",&a[i],&b[i]); s=s+a[i]; }
if (s>=w)
{
max=0;
dp[0]=1;
for (i=1;i<=n;i++)
{
for (j=max;j>=0;j--)
{
if (dp[j]!=0 && (dp[j+a[i]]>dp[j]+b[i] || dp[j+a[i]]==0))
{ dp[j+a[i]]=dp[j]+b[i];
if (j+a[i]>max) max=j+a[i];
if (j+a[i]>=w && dp[j+a[i]]<mx) mx=dp[j+a[i]];}
}
if (max>w) max=w;
}
fprintf(g,"%lld",mx-1);
}
else fprintf(g,"-1");
fclose(g);
return 0;
}