Cod sursa(job #677727)
Utilizator | Data | 10 februarie 2012 16:23:57 | |
---|---|---|---|
Problema | Problema rucsacului | Scor | 35 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.47 kb |
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
#define MAXN 5010
#define MAXG 10010
int W[MAXN],P[MAXN],D[MAXG][MAXG];
int main(){
int i,cw,N,G;
f>>N>>G;
for(i=1;i<=N;i++){
f>>W[i]>>P[i];
}
for(i=1;i<=N;i++){
for(cw=0;cw<=G;cw++){
D[i][cw]=D[i-1][cw];
if(W[i]<=cw && D[i-1][cw-W[i]]+P[i]>D[i][cw]){
D[i][cw]=D[i-1][cw-W[i]]+P[i];
}
}
}
g<<D[N][G];
f.close();
g.close();
return 0;
}