Pagini recente » Cod sursa (job #1799913) | Cod sursa (job #2904959) | Cod sursa (job #111534) | Cod sursa (job #2735559) | Cod sursa (job #2450243)
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
void r(int &a)
{
int elsker;
scanf("%d",&elsker);
a=elsker;
}
struct JEG
{
int w;
int x;
};
bool operator < (JEG a,JEG b)
{
return a.w<b.w;
}
JEG a[5007];
int n,m;
int gold[(int)1e4+7];
int main()
{
freopen("rucsac.in","r",stdin); /// te bat
freopen("rucsac.out","w",stdout); /// te bat
r(n);
r(m);
for(int i=1;i<=n;i++)
{
r(a[i].w);
r(a[i].x);
}
sort(a+1,a+n+1);
for(int i=1;i<=m;i++)
gold[i]=-(int)1e9;
int mx=0;
for(int i=1;i<=n;i++)
{
/// st<=mx
/// st+a[i].w<=m
/// st<=min(mx,m-a[i].w)
int st=min(mx,m-a[i].w);
for(int j=st;j>=0;j--)
gold[j+a[i].w]=max(gold[j+a[i].w],gold[j]+a[i].x);
mx+=a[i].w;
mx=min(mx,m);
}
int ub=0;
for(int i=0;i<=m;i++)
ub=max(ub,gold[i]);
cout<<ub<<"\n";
return 0;
}