Cod sursa(job #1021068)
Utilizator | Cobuz Andrei classius | Data | 3 noiembrie 2013 09:43:27 |
---|---|---|---|
Problema | Energii | Scor | 5 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.59 kb |
#include <cstdio>
#include <algorithm>
using namespace std;
int INF=(1<<30),G,w,d[1002][5002],o,l,e,c,i,n,j;
int main()
{
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
scanf("%d%d",&n,&w);
for (i=0;i<=n;i++)
for (j=1;j<=w;j++)
d[i][j]=INF;
for (i=1;i<=n;i++)
{
scanf("%d%d",&e,&c);
for(j=e;j<=w;j++){
d[i][j]=d[i-1][j];
if(d[i-1][j-e]<INF)
d[i][j]=min(d[i-1][j-e]+c,d[i][j]);
}
}
if (d[n][w]==INF) printf("-1\n");
else printf("%d\n",d[n][w]);
return 0;
}