Pagini recente » Borderou de evaluare (job #1639861) | Borderou de evaluare (job #127918) | Borderou de evaluare (job #1293487) | Borderou de evaluare (job #1961034) | Cod sursa (job #615234)
Cod sursa(job #615234)
#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;
}