Pagini recente » Cod sursa (job #2172558) | Cod sursa (job #1152416) | Cod sursa (job #2084395) | Cod sursa (job #356203) | Cod sursa (job #2047407)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int dp[3][10002];
vector<pair<int,int>>v;
int main(){
ifstream cin("rucsac.in");
ofstream cout("rucsac.out");
int n,g,i,line=1,a,b,k;
cin>>n>>g;
for(i=1;i<=n;i++){
cin>>a>>b;
v.push_back(make_pair(a,b));
}
for(i=1;i<v[0].first;i++){
dp[1][i]=0;
}
for(i=v[0].first;i<=g;i++){
dp[1][i]=v[0].second;
}
for(i=2;i<=n;i++){
line=line%2+1;
for(k=1;k<=g;k++){
if(k>=v[i-1].first)
dp[line][k]=max(dp[line%2+1][k],dp[line%2+1][k-v[i-1].first]+v[i-1].second);
else
dp[line][k]=dp[line%2+1][k];
}
}
cout<<dp[line][g];
return 0;
}