Cod sursa(job #1428474)
| Utilizator | Data | 4 mai 2015 16:50:28 | |
|---|---|---|---|
| Problema | Energii | Scor | 5 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.92 kb |
#include <stdio.h>
#include <algorithm>
const int WMAX=5001;
const int INF=1e9;
int d[WMAX];
int main()
{
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
int n,g,w,i,e,c,last,j;
scanf("%d%d",&g,&w);
for(i=1; i<=w; i++)
d[i]=INF;
last=0;
for(i=1; i<=g; i++)
{
scanf("%d%d",&e,&c);
for(j=last; j>=0; j--)
if(d[j]!=INF)
if(j+e<=w)
{
if(d[j+e]>d[j]+c)
{
d[j+e]=d[j]+c;
if(j+e>last)
last=j+e;
}
}
else if(d[w]>d[j]+e)
{
d[w]=d[j]+e;
last=w;
}
}
if(d[w]==INF)
printf("-1");
else
printf("%d\n",d[w]);
return 0;
}
