Pagini recente » Cod sursa (job #1640947) | Cod sursa (job #679963) | Cod sursa (job #2024088) | Cod sursa (job #1144247) | Cod sursa (job #114150)
Cod sursa(job #114150)
#include <stdio.h>
int a[1001],b[1001],c[10011002],s,s2,min,n,e;
char d[10011002];
int main()
{
FILE *in,*out;
int i,j;
in=fopen("energii.in","r");
out=fopen("energii.out","w");
fscanf(in,"%d",&n);
fscanf(in,"%d",&e);
for (i=1;i<=n;i++)
{
fscanf(in,"%d%d",&a[i],&b[i]);
s+=b[i];
s2+=a[i];
}
if (s2<e)
{
fprintf(out,"-1\n");
fclose(in);
fclose(out);
return 0;
}
min=s;
for (i=1;i<=n;i++)
{
for (j=e;j>=1;j--)
{
if (d[j]&&(c[j+a[i]]>c[j]+b[i]||!d[j+a[i]]))
{
c[j+a[i]]=c[j]+b[i];
d[j+a[i]]=1;
if (j+a[i]>=e&&min >c[j+a[i]])
min=c[j+a[i]];
}
}
if (!d[a[i]]||c[a[i]]>b[i])
{
c[a[i]]=b[i];
d[a[i]]=1;
if (min >b[i]&&a[i]>=e)
min=b[i];
}
}
/*for (i=1;i<=n;i++)
{
for (j=s;j>b[i];j--)
{
if (c[j-b[i]]&&c[j-b[i]]+a[i]>c[j])
{
c[j]=c[j-b[i]]+a[i];
if (c[j]>=e&&j<min)
min=j;
}
}
if (a[i]>c[b[i]])
{
c[b[i]]=a[i];
if (a[i]>=e&&b[i]<min)
min=b[i];
}
}*/
fprintf(out,"%d\n",min);
fclose(in);
fclose(out);
return 0;
}