Pagini recente » Cod sursa (job #2031920) | Cod sursa (job #184712) | Cod sursa (job #2798829) | Cod sursa (job #1934102) | Cod sursa (job #1881510)
#include <fstream>
#define g first
#define p second
using namespace std;
ifstream fin ("rucsac.in");
ofstream fout ("rucsac.out");
pair <int,int> v[10010];
//D[i] = indicele ultimului element dintr-un sir cu suma i
//P[i] = profitul maxim sa obtin greutatea i
int G,n,P[10010],i,j,sol;
bool D[10010];
int main () {
fin>>n>>G;
for(i=1;i<=n;i++)
fin>>v[i].g>>v[i].p;
D[0] = 1;
for(i=1;i<=n;i++){
for(j=G;j>=0;j--){
if(D[j]!=0 && j+v[i].g <= G)
if(P[j+v[i].g]<P[j]+v[i].p){
D[j+v[i].g]=1;
P[j+v[i].g]=P[j]+v[i].p;
sol = max(sol, P[j+v[i].g]);
}
}
}
fout<<sol;
}