Nu aveti permisiuni pentru a descarca fisierul grader_test3.in
Cod sursa(job #2766797)
| Utilizator | Data | 3 august 2021 13:22:43 | |
|---|---|---|---|
| Problema | Problema rucsacului | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.86 kb |
#include <iostream>
#include <fstream>
#define INF -1
using namespace std;
ifstream fin ("rucsac.in");
ofstream fout ("rucsac.out");
int dp[10005], f[10005];
int sol, nxt, far, mark;
int n, lim;
int v, g;
int main (){
fin>>n>>lim;
for(int i=1; i<=lim; i++)
dp[i]=INF;
for(int i=1; i<=n; i++){
fin>>g>>v;
mark=far;
for(int j=mark; j>=0; j--){
if(dp[j] != INF && f[j] != i){
nxt=j + g;
if(nxt <= lim && dp[j] + v > dp[nxt]){
dp[nxt]=dp[j] + v;
f[nxt]=i;
if(nxt > far)
far=nxt;
}
}
}
}
for(int i=lim; i>=1; i--)
if(dp[i] > sol && dp[i] != INF)
sol=dp[i];
fout<<sol;
return 0;
}
