Pagini recente » Cod sursa (job #387582) | Cod sursa (job #739751) | Cod sursa (job #1009176) | Cod sursa (job #365525) | Cod sursa (job #261097)
Cod sursa(job #261097)
# include <stdio.h>
int a[10000],b[10000],c[1000000],d[1000000],i,j,min,n,w,s,aux;
int main ()
{
freopen ("energii.in","r",stdin);
freopen ("energii.out","w",stdout);
scanf ("%i%i",&n,&w);
for (i=0;i<n;i++)
{
scanf ("%i%i",&a[i],&b[i]);
s=s+a[i];
}
if (s<w)
printf ("-1");
else
{
if (s>20000)
s=20000;
for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
if (b[i]>b[j])
{
aux=a[i];
a[i]=a[j];
a[j]=aux;
aux=b[i];
b[i]=b[j];
b[j]=aux;
}
for (i=0;i<n;i++)
{
for (j=0;j<=s;j++)
if (c[j]==1)
if (c[j+a[i]]==0)
{
c[j+a[i]]=2;
d[j+a[i]]=d[j]+b[i];
}
if (c[a[i]]==0)
{
c[a[i]]=1;
d[a[i]]=b[i];
}
for (j=0;j<=s;j++)
if (c[j]==2)
c[j]=1;
}
min=30000;
for (i=w;i<=s;i++)
if (c[i]==1)
if (d[i]<min)
min=d[i];
printf ("%i",min);
}
return 0;
}