Pagini recente » Cod sursa (job #713377) | Cod sursa (job #1037553) | Cod sursa (job #2634749) | Cod sursa (job #463318) | Cod sursa (job #2844868)
#include <bits/stdc++.h>
using namespace std;
int d[50002];
int p[50000];
int v[50000];
int n, suma, indiceMaximUnu, i, j, G, st;
int main () {
ifstream cin ("rucsac.in");
ofstream cout("rucsac.out");
cin>>n >> G;
for (i=1;i<=n;i++) {
cin>>v[i] >> p[i];
}
d[0] = 0;
for(i = 1;i<=G;i++){
d[i] = -1;
}
indiceMaximUnu = 0;
for (i=1;i<=n;i++) {
/// am ajuns la v[i] si facem sume luandu-l in calcul si pe el
for (j=indiceMaximUnu;j>=0;j--)
if (d[j] != -1)
if(j+v[i] <= G){
if(d[j+v[i]] < d[j] + p[i]){
d[j+v[i]] =d[j]+p[i];
indiceMaximUnu = max(indiceMaximUnu, j+v[i]);
}
}
}
int ans = 0;
for(i = 0;i<=G;i++){
ans = max(ans, d[i]);
}
cout << ans;
/// st va fi indiceMaximUnu
/// am cout<<st
return 0;
}