Cod sursa(job #2493485)
| Utilizator | Data | 16 noiembrie 2019 13:02:22 | |
|---|---|---|---|
| Problema | Problema rucsacului | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.55 kb |
#include <fstream>
using namespace std;
ifstream fin("rucsac.in");
ifstream fout("rucsac.out");
int N, G, W[5005], P[5005], DP[5005][10005];
void Read(){
fin>>N>>G;
for(int i = 1; i <= N; i++){
fin>>W[i]>>P[i];
}
}
void Solve(){
for(int i = 1; i <= N; i++)
for(int j = 1; j <= G; j++)
if(j-W[i] >= 0)
DP[i][j] = max(DP[i-1][j],DP[i-1][j-W[i]] + P[i]);
else DP[i][j] = DP[i-1][j];
fout<<DP[N][G];
}
int main()
{
Read();
Solve();
return 0;
}
