Pagini recente » Cod sursa (job #2788147) | Cod sursa (job #2159580) | Cod sursa (job #549912) | Cod sursa (job #1666385) | Cod sursa (job #633521)
Cod sursa(job #633521)
#include <iostream>
#include <iomanip>
#include <fstream>
#define INF 1000000000
using namespace std;
int n,G,w[5005],p[5005], A[10001], B[10001];
void citire(){
ifstream fin("rucsac.in");
fin>>n>>G;
for(int i=1;i<=n;++i)
fin >> w[i]>>p[i];
fin.close();
}
void afisare(){
ofstream fout("rucsac.out");
fout << A[G];
fout.close();
}
void rezolvare(){
//A[i][g] = profitul maxim care se poate obtine cu primele i obiecte, a caror greutate insumata este g
for(int i=1;i<=n;++i){
//iau fiecare obiect
for(int g=1;g<=G;++g){
int p1 = A[g];
int p2 = g>=w[i]?A[g-w[i]]+p[i]:0;
B[g] = p1>p2?p1:p2;
}
for(int j=1;j<=G;++j)
A[j] = B[j];
}
}
int main(){
citire();
rezolvare();
afisare();
}