Cod sursa(job #2097521)
| Utilizator | Data | 31 decembrie 2017 18:20:22 | |
|---|---|---|---|
| Problema | Problema rucsacului | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.55 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
int Dp[2][10005], n, G, P[5005], W[5005];
int main()
{
f >> n >> G;
int ind = 0;
for(int i = 1; i <= n; ++i)
f >> W[i] >> P[i];
for(int i = 1; i <= n; ++i)
{
ind = 1 - ind;
for(int j = 1; j <= G; ++j)
if(j-W[i] >= 0)
Dp[ind][j] = max(Dp[1-ind][j], Dp[1-ind][j-W[i]] + P[i]);
else Dp[ind][j] = Dp[1-ind][j];
}
g << Dp[ind][G];
}
