Pagini recente » Cod sursa (job #2365106) | Monitorul de evaluare | Cod sursa (job #1806584) | Cod sursa (job #2085314) | Cod sursa (job #2385380)
#include <bits/stdc++.h>
#define Dim 5005
using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
typedef pair<int,int> pii;
pii V[Dim];
int N,G,dp[2*Dim],ans;
int main()
{
f>>N>>G;
for(int i=1;i<=N;i++) f>>V[i].first>>V[i].second;
for(int i=1;i<=G;i++) dp[i]=-1;
for(int i=1;i<=N;i++)
{
int W=V[i].first;
int pay=V[i].second;
for(int j=G;j>=1;j--)
{
if(j-W>=0&&dp[j-W]!=-1) dp[j]=max(dp[j],dp[j-W]+pay);
else
if(j==W) dp[j]=max(dp[j],pay);
}
}
for(int i=1;i<=G;i++) ans=max(ans,dp[i]);
g<<ans;
return 0;
}