Cod sursa(job #1677430)
Utilizator | Data | 6 aprilie 2016 16:09:52 | |
---|---|---|---|
Problema | Problema rucsacului | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.58 kb |
#include <bits/stdc++.h>
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
using namespace std;
int N, G, Pmax;
bool u;
int W[5000], P[5000];
int D[2][5000];
int main()
{
fin >> N >> G;
for(int i = 1; i <= N; ++i)
fin >> W[i] >> P[i];
for(int i = 1; i <= N; ++i){
for(int cw = 0; cw <= G; ++cw)
{
D[u][cw] = D[!u][cw];
if(W[i] <= cw)
D[u][cw] = max(D[u][cw], D[!u][cw - W[i]] + P[i]);
}
u = !u;
}
u = !u;
Pmax = D[u][G];
fout << Pmax;
return 0;
}