Pagini recente » Cod sursa (job #776395) | Borderou de evaluare (job #1567225) | Cod sursa (job #2650623) | Cod sursa (job #3135756) | Cod sursa (job #1681603)
#include <iostream>
#include <cstdio>
using namespace std;
int d[10005];
int main()
{
FILE *fin = fopen("energii.in", "r");
FILE *fout = fopen("energii.out", "w");
int n, costMin, energie, cost, enMax = 0, rez;
for(int i = 1; i <= 10000; ++i)
d[i] = -1;
fscanf(fin, "%d%d", &n, &costMin);
d[0] = 0;
for(int i = 1; i <= n; ++i){
fscanf(fin, "%d%d", &energie, &cost);
for(int j = enMax; j >= 0; --j){
if(d[j] != -1 && (d[j + energie] == -1 || d[j] + cost < d[j + energie])){
if(j + energie > enMax)
enMax = j + energie;
d[j + energie] = d[j] + cost;
}
}
}
rez = 0;
d[0] = -1;
for(int i = costMin; i <= enMax; ++i)
if(d[i] != -1 && (rez == 0 || d[i] < d[rez]))
rez = i;
fprintf(fout, "%d", d[rez]);
return 0;
}