Pagini recente » Cod sursa (job #3282248) | Cod sursa (job #3272074) | Cod sursa (job #2362910) | Cod sursa (job #3003500) | Cod sursa (job #1671134)
#include<cstdio>
#include<algorithm>
using namespace std;
int suma[10000001],m,n,i,j,pp,sm,w;
struct tacos{int cant,cost;};
tacos v[1001];
bool sortare(tacos a,tacos b)
{
return a.cost<b.cost;
}
FILE *in,*out;
int main ()
{
in=fopen("energii.in","r");
out=fopen("energii.out","w");
fscanf(in,"%d%d",&n,&w);
for(i=1;i<=n;i++)
fscanf(in,"%d %d",&v[i].cant,&v[i].cost);
sort(v+1,v+n+1,sortare);
pp=0;
m=10000001;
sm=v[1].cant;
suma[v[1].cant]=v[1].cost;
for(i=2;i<=n;i++)
{
for(j=sm;j>0;j--)
{
if(suma[j]!=0 && (suma[j+v[i].cant]==0 || suma[j+v[i].cant]>suma[j]+v[i].cost))
suma[j+v[i].cant]=suma[j]+v[i].cost;
}
if(suma[v[i].cant]==0)
suma[v[i].cant]=v[i].cost;
sm+=v[i].cant;
}
/*for(i=1;i<=sm;i++)
fprintf(out,"%d\n",suma[i]);*/
for(i=w;i<=sm;i++)
if(suma[i]>0 && suma[i]<m)
m=suma[i];
if(m==10000001)
m=-1;
fprintf(out,"%d",m);
return 0;
}