Cod sursa(job #2295852)
| Utilizator | Data | 3 decembrie 2018 23:35:36 | |
|---|---|---|---|
| Problema | Problema rucsacului | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.58 kb |
#include <fstream>
#define MAX 10001
using namespace std;
ifstream in("rucsac.in");
ofstream in("rucsac.out");
int n, g, w[MAX], p[MAX], dp[MAX];
int main()
{
int i, j, best = 0;
in >> n >> g;
for(i = 1; i <= n; i++) in >> w[i] >> p[i];
for(i = 1; i <= n; i++)
{
for(j = g; j > w[i]; j--)
if((dp[j-w[i]] + p[i] > dp[j]) && dp[j-w[i]] != 0) dp[j]=dp[j-w[i]]+p[i];
if(dp[w[i]] < p[i]) dp[w[i]]=p[i];
}
for(i = 1; i <= g; i++)
if(dp[i] > best) best = dp[i];
out << best;
return 0;
}
