Pagini recente » Cod sursa (job #1048157) | Cod sursa (job #2867326) | Cod sursa (job #2437489) | Cod sursa (job #1052370) | Cod sursa (job #2780708)
#include <bits/stdc++.h>
using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");
const int lim=5005;
const int inf=2e9+7;
const int gmax=1e4+5;
pair<int,int> obj[lim];
int dp[gmax],n,g;
int main()
{
in>>n>>g;
for(int i=1;i<=n;++i)
in>>obj[i].first>>obj[i].second;
for(int i=1;i<=g;++i)
dp[i]=-inf;
int l=0;
for(int i=1;i<=n;++i)
for(int j=min(l,g-obj[i].first);j>=0;--j)
dp[j+obj[i].first]=max(dp[j+obj[i].first],dp[j]+obj[i].second),
l=max(l,j+obj[i].first);
int maxx=0;
for(int i=0;i<=g;++i)
maxx=max(maxx,dp[i]);
out<<maxx<<'\n';
return 0;
}