Pagini recente » preONI 2008 - Runda 3 | Cod sursa (job #143459) | Cod sursa (job #714858) | Cod sursa (job #377393) | Cod sursa (job #1012841)
#include <cstdio>
#include <array>
#include <deque>
#define Max(a,b) ((a)>(b)?(a):(b))
using namespace std;
struct obiect
{
int masa,profit;
}ob[5000];
int n,i,gmax,obs;
deque<array<int,10001>>a;
int main()
{
freopen("rucsac.in","r",stdin);
freopen("rucsac.out","w",stdout);
scanf("%d%d",&n,&gmax);
for (i=0;i<n;i++)
scanf("%d%d",&ob[i].masa,&ob[i].profit);
obs=0;
while (obs<n)
{
a.resize(2);
a[1][0]=1;
for (i=1;i<ob[obs].masa;i++)
a[1][i]=a[0][i];
for (;i<=gmax;i++)
a[1][i]=Max(a[0][i],ob[obs].profit+a[0][i-ob[obs].masa]);
obs++;
a.pop_front();
}
printf("%d\n",a[0][gmax]);
return 0;
}