Cod sursa(job #151310)
Utilizator | Data | 7 martie 2008 23:30:52 | |
---|---|---|---|
Problema | Energii | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.52 kb |
#include <stdio.h>
#define INF 12128
int v[5128];
int main()
{
int a,b,i,n,w,rez,j;
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
scanf("%d%d", &n, &w);
for(i=1;i<=w;i++)
v[i]=INF;
rez=INF;
for(i=1;i<=n;i++)
{
scanf("%d%d", &a, &b);
if(a>=w)
{
if(b<rez)
rez=b;
}
else
{
for(j=w-a;j<=w;j++)
if(v[j]+b<rez)
rez=v[j]+b;
for(j=w-a;j>=0;j--)
if(v[j]+b<v[j+a])
v[j+a]=v[j]+b;
}
}
if (rez!=INF)
printf("%d\n",rez);
else
printf("-1\n");
}