Cod sursa(job #1427274)
| Utilizator | Data | 1 mai 2015 20:46:27 | |
|---|---|---|---|
| Problema | Energii | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.64 kb |
#include <cstdio>
long long v[1000001];
int main()
{
freopen("energii.in", "r", stdin);
freopen("energii.out", "w", stdout);
int n, p, e, b, i, j, dr, min;
scanf("%d%d", &n, &p);
dr=0;
v[0]=0;
for(i=1;i<1000000;i++){
v[i]=2000000000;
}
min=2000000000;
for(i=0;i<n;i++){
scanf("%d%d", &e, &b);
for(j=dr;j>=0;j--){
if(v[j]+b<v[j+e] && v[j]!=2000000000 && j<p){
v[j+e]=v[j]+b;
if(v[j]+e>=p && min>v[j+e])
min=v[j+e];
}
}
dr+=e;
}
if(min==2000000000)
min=-1;
printf("%d", min);
return 0;
}
