Cod sursa(job #2135787)
| Utilizator | Data | 19 februarie 2018 11:06:17 | |
|---|---|---|---|
| Problema | Problema rucsacului | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.48 kb |
#include <fstream>
using namespace std;
int n, g, dp[2][10005], w[10005], p[10005], u;
int main(){
ifstream cin ("rucsac.in");
ofstream cout ("rucsac.out");
cin >> n >> g;
for (int i=1; i<=n; i++) cin >> w[i] >> p[i];
for (int i=1; i<=n; i++, u=1-u){
for (int j=0; j<=g; j++){
dp[u][j] = dp[1-u][j];
if (j >= w[i]) dp[u][j] = max(dp[u][j], dp[1-u][j-w[i]] + p[i]);
}
}
cout << dp[1-u][g];
return 0;
}
