Cod sursa(job #1012865)
Utilizator | Vlad Rochian vladrochian | Data | 19 octombrie 2013 18:48:07 |
---|---|---|---|
Problema | Problema rucsacului | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.52 kb |
#include <cstdio>
#define Max(a,b) ((a)>(b)?(a):(b))
using namespace std;
int n,i,gmax,obs,m[5000],p[5000],a[2][10001];
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",&m[i],&p[i]);
obs=0;
while (obs<n)
{
for (i=1;i<=gmax;i++)
a[0][i]=a[1][i];
for (i=1;i<m[obs];i++)
a[1][i]=a[0][i];
for (;i<=gmax;i++)
a[1][i]=Max(a[0][i],p[obs]+a[0][i-m[obs]]);
obs++;
}
printf("%d\n",a[1][gmax]);
return 0;
}