Pagini recente » Cod sursa (job #2647249) | Cod sursa (job #1538386) | Cod sursa (job #2389775) | Cod sursa (job #454833) | Cod sursa (job #1657756)
#include <fstream>
#include <cstring>
using namespace std;
FILE *fin, *fout;
int n, g, pi, gi, A[2][10010], ante, now = 1, sol;
void afisare();
int main()
{
int i, j;
fin = fopen("rucsac.in", "r");
fout = fopen("rucsac.out", "w");
fscanf(fin, "%d%d", &n, &g);
memset(A, -1, 20100);
A[ante][0] = 0;
for (i = 1; i <= n; i++)
{
fscanf(fin, "%d%d", &gi, &pi);
for (j = 0; j <= g; j++)
{
if (A[ante][j] != -1 && j + gi <= g)
A[now][j + gi] = max(A[ante][j + gi], A[ante][j] + pi);
}
//afisare();
swap(ante, now);
}
for (i = 1; i <= g; i++)
{
if (A[ante][i] > sol)
sol = A[ante][i];
}
fprintf(fout, "%d\n", sol);
fclose(fout);
return 0;
}
void afisare()
{
int j;
for (j = 0; j <= g; j++)
fprintf(fout, "%d ", A[ante][j]);
fprintf(fout, "\n");
for (j = 0; j <= g; j++)
fprintf(fout, "%d ", A[now][j]);
fprintf(fout, "\n");
fprintf(fout, "\n");
}