Pagini recente » Istoria paginii utilizator/radu.millio15 | Istoria paginii utilizator/andradaf | Istoria paginii utilizator/ruslanrcw | Istoria paginii utilizator/costel | Cod sursa (job #2002021)
#include <cstdio>
#include <algorithm>
using namespace std;
const int NMAX = 100000;
const int N = 1000005;
int dp[NMAX + 5];
int main()
{
int n, gg, p, g, i, poz, j, maxim = 0, minim = N;
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
scanf("%d%d", &n, &gg);
for(i = 1;i <= gg + 10000; ++i) {
dp[i] = NMAX;
}
poz = 0;
for(i = 1;i <= n; ++i) {
scanf("%d%d", &p, &g);
for(j = poz;j >= 0; --j) {
if(dp[j] != NMAX) {
if(dp[j] + g < dp[j + p]) {
dp[j + p] = dp[j] + g;
if(j + p > poz) {
poz = j + p;
}
maxim = max(maxim, j + p);
}
}
}
}
for(i = maxim;i >= gg; --i) {
minim = min(minim, dp[i]);
}
if(minim != N) {
printf("%d\n", minim);
}
else {
printf("-1\n");
}
return 0;
}