Cod sursa(job #3149720)
| Utilizator | Data | 11 septembrie 2023 16:19:41 | |
|---|---|---|---|
| Problema | Problema rucsacului | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.66 kb |
#include <bits/stdc++.h>
#define DIM 50001
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
struct elem{
int weight, profit;
};
elem v[DIM];
int curr[DIM], last[DIM];
int n, i, j, G;
int32_t main(void){
fin >> n >> G;
for(i=1;i<=n;i++)
fin >> v[i].weight >> v[i].profit;
for(i=1;i<=n;i++){
for(j=0;j<=G;j++){
curr[j] = last[j];
if(v[i].weight <= j)
curr[j] = max(curr[j], last[j - v[i].weight] + v[i].profit);
}
for(j=0;j<=G;j++)
last[j] = curr[j];
}
fout << curr[G];
}
