Pagini recente » Cod sursa (job #883351) | Cod sursa (job #1611372) | Cod sursa (job #1619546) | Cod sursa (job #3248980) | Cod sursa (job #1671121)
#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;
if(v[1].cant>=w)
{
pp=1;
m=v[1].cost;
}
for(i=2;i<=n && pp==0;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;
if(j+v[i].cant>=w)
{
pp=1;
m=suma[j+v[i].cant];
}
}
}
if(suma[v[i].cant]==0)
suma[v[i].cant]=v[i].cost;
if(v[i].cant>=w)
{
pp=1;
m=suma[v[i].cant];
}
sm+=v[i].cant;
}
/*for(i=1;i<=sm;i++)
fprintf(out,"%d\n",suma[i]);*/
if(pp==0)
m=-1;
fprintf(out,"%d",m);
return 0;
}