Pagini recente » Cod sursa (job #1060962) | Cod sursa (job #1941499) | Cod sursa (job #3139108) | Cod sursa (job #2173308) | Cod sursa (job #615233)
Cod sursa(job #615233)
#include<cstdio>
#include<bitset>
using namespace std;
#define NM 5005
#define GG 10005
#define maxim(a,b) (a>b)? (a):(b)
short int N,G;
short int g[NM],p[NM];
int rez[GG];
bitset<GG>viz;
inline void read()
{
freopen("rucsac.in","r",stdin);
freopen("rucsac.out","w",stdout);
scanf("%hd%hd",&N,&G);
for (short int i=1; i<=N; ++i)
scanf("%hd%hd",&g[i],&p[i]);
}
inline void rucsac()
{
int maxx=0;
for (short int i=1; i<=N; ++i)
{
for (short int j=G; j-g[i]>=0; --j)
if (viz[j-g[i]])
{
rez[j]=maxim(rez[j],rez[j-g[i]]+p[i]);
viz[j]=1;
}
rez[g[i]]=maxim(p[i],rez[g[i]]);
viz[g[i]]=1;
}
for (int i=1; i<=G; ++i)
maxx=maxim(maxx,rez[i]);
printf("%d",maxx);
}
int main()
{
read();
rucsac();
return 0;
}