Pagini recente » Cod sursa (job #1647547) | Cod sursa (job #2670166) | Cod sursa (job #494678) | Cod sursa (job #979366) | Cod sursa (job #553733)
Cod sursa(job #553733)
#include <iostream>
#include <limits>
#include <cstdio>
#define NMAX 10000
using namespace std;
int G, W, E[NMAX], C[NMAX], Sol[NMAX][NMAX];
void read(void)
{
FILE *f = fopen("energii.in", "r");
fscanf(f, "%d", &G);
fscanf(f, "%d", &W);
for(int i = 1; i <= G; ++i)
fscanf(f, "%d%d", &E[i], &C[i]);
fclose(f);
}
void solve(void)
{
for(int i = 1; i <= W; ++i)
Sol[0][i] = 10000;
for(int i = 1; i <= G; ++i)
for(int j = 1; j <= W; ++j)
if(E[i] <= j && Sol[i-1][j - E[i]] + C[i] < Sol[i-1][j])
Sol[i][j] = Sol[i-1][j - E[i]] + C[i];
else
if(Sol[i-1][j] > C[i] && E[i] > j)
Sol[i][j] = C[i];
else
Sol[i][j] = Sol[i-1][j];
}
void print(void)
{
FILE *g = fopen("energii.out", "w");
if(Sol[G][W] == 10000)
fprintf(g, "-1\n");
else
fprintf(g, "%d\n", Sol[G][W]);
fclose(g);
}
int main(void)
{
read();
solve();
print();
return 0;
}