Pagini recente » Cod sursa (job #3181598) | Cod sursa (job #2948604) | Cod sursa (job #2969927) | Cod sursa (job #1424173) | Cod sursa (job #1825491)
#include <cstdio>
#include <algorithm>
using namespace std;
const int INF = 9999999;
int e[1001], c[1001];
int d[1001][5001];
int main()
{
FILE *fin, *fout;
fin = fopen("energii.in", "r");
fout = fopen("energii.out", "w");
int n, w;
fscanf(fin, "%d%d", &n, &w);
for(int i = 1; i <= n; i++)
fscanf(fin, "%d%d", &e[i], &c[i]);
/// rucsac
for(int i = 0; i <= w; i++)
d[0][i] = INF;
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= w; j++)
{
if(j - e[i] <= 0 && d[i - 1][j - e[i]] < INF)
{
if(j - e[i] <= 0)
d[i][j] = min(c[i], d[i - 1][j]);
else
d[i][j] = min(d[i - 1][j], d[i][j - e[i]] + c[i]);
}
else
d[i][j] = INF;
}
}
if(d[n][w] != INF)
fprintf(fout, "%d", d[n][w]);
else
fprintf(fout, "-1");
return 0;
}