Cod sursa(job #1921858)
| Utilizator | Data | 10 martie 2017 15:02:48 | |
|---|---|---|---|
| Problema | Problema rucsacului | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.56 kb |
#include <fstream>
#include <iostream>
#define FOR(i, n) for (int i = 0; i < n; ++i)
#define N 5000
#define G 10001
using namespace std;
int C[2][G];
short W[N], P[N];
int main() {
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int n, g;
fin >> n >> g;
for (int i = 0; i < n; ++i)
fin >> W[i] >> P[i];
int k = 1;
for (int i = 0; i < n; ++i, k ^= 1, cout << "\n")
for (int j = W[i]; j <= g; ++j)
C[k][j] = max(C[k ^ 1][j - W[i]] + P[i], C[k ^ 1][j]);
fout << C[k ^ 1][g] << "\n";
return 0;
}
