Pagini recente » Cod sursa (job #952772) | Cod sursa (job #998294) | Cod sursa (job #1759593) | Cod sursa (job #3287520) | Cod sursa (job #2806224)
#include <stdio.h>
#include <cstring>
#include <string>
#include <cmath>
#include <algorithm>
using namespace std;
FILE* f, * g;
int a[1002][5002];
struct elem
{
int e, c;
}v[1002];
int main()
{
int n, E, i, j, lc, lp;
f = fopen("energii.in", "r");
g = fopen("energii.out", "w");
fscanf(f, "%d", &n);
fscanf(f, "%d", &E);
for (i = 1;i <= n;i++)
fscanf(f, "%d %d", &v[i].e, &v[i].c);
for (j = 0;j <= E;j++)
a[0][j] = 2000000000;
for (i = 1;i <= n;i++)
{
for (j = 1;j <= E;j++)
{
if (v[i].e <= j)
{
if (v[i].c + a[i - 1][j - v[i].e] < a[i - 1][j])
a[i][j] = v[i].c + a[i - 1][j - v[i].e];
else
a[i][j] = a[i - 1][j];
}
else
if (a[i - 1][j] > v[i].c)
a[i][j] = v[i].c;
else
a[i][j] = a[i - 1][j];
}
}
if (a[n][E] == 2000000000)
fprintf(g, "-1");
else
fprintf(g, "%d", a[n][E]);
fclose(f);
fclose(g);
return 0;
}