Pagini recente » Cod sursa (job #56683) | Cod sursa (job #385985) | Cod sursa (job #2893587) | Cod sursa (job #2803364) | Cod sursa (job #333914)
Cod sursa(job #333914)
#include<cstdio>
const int N = (1<<10);
const int W = (1<<13);
const int oo = (1<<27);
int n,w,e[N],c[N],cost[W];
void citire()
{
scanf("%d%d",&n,&w);
for(int i=1;i<=n;++i)
scanf("%d%d",&e[i],&c[i]);
}
void rucsac()
{
int i,j;
for(j=1;j<=w;++j)
cost[j]=oo;
for(i=1;i<=n;++i)
{
for(j=w-1;j;--j)
{
if(j+e[i]>=w)
{
if(cost[j]+c[i]<cost[w])
cost[w]=cost[j]+c[i];
continue;
}
if(cost[j]+c[i] < cost[j+e[i]])
cost[j+e[i]]=cost[j]+c[i];
}
if(e[i]>=w && c[i]<cost[w])
{
cost[w]=c[i];
continue;
}
if(c[i]<cost[e[i]])
cost[e[i]]=c[i];
}
if(cost[w]==oo)
printf("-1\n");
else
printf("%d\n",cost[w]);
}
int main()
{
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
citire();
rucsac();
return 0;
}