Cod sursa(job #1425533)
| Utilizator | Data | 27 aprilie 2015 16:54:21 | |
|---|---|---|---|
| Problema | Problema rucsacului | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.62 kb |
#include <stdio.h>
#include <algorithm>
using namespace std;
int d[10005];
int main()
{
freopen("rucsac.in","r",stdin);
freopen("rucsac.out","w",stdout);
int n,g,w,p,maxdr=0,maxp,poz=0,s,i,j;
for(i=1; i<=10000; i++)
d[i]=-1;
scanf("%d%d",&n,&g);
maxdr=0;
for(i=1; i<=n; i++)
{
scanf("%d%d",&w,&p);
for(j=maxdr; j>=0; --j)
if(j+w<=g)
if(d[j]!=-1)
{
d[j+w]=max(d[j+w],d[j]+p);
if(j+w>maxdr)
maxdr=j+w;
}
}
maxp=0;
for(j=1; j<=g; ++j)
if(d[j]>maxp)
maxp=d[j];
printf("%d\n",maxp);
return 0;
}
