Cod sursa(job #1423139)

Utilizator tac1234Tran Bach Nguyen tac1234 Data 21 aprilie 2015 15:06:33
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <cstdio>
#include <algorithm>
using namespace std;
int d[10005],g[5005],p[5005];
int main()
{
    freopen("rucsac.in","r",stdin);
    freopen("rucsac.out","w",stdout);
    int n,gmax;
    scanf("%d%d",&n,&gmax);
    for(register int i=1; i<=n; ++i)
        scanf("%d%d",&g[i],&p[i]);
    int smax=0;
    for(register int i=1; i<=gmax; ++i)
        d[i]=-1;
    for(register int i=1; i<=n; ++i)
    {
        for(register int j=smax; j>=0; --j)
            if (j+g[i]<=gmax)
                if (d[j]!=-1)
                {
                    d[j+g[i]]=max(d[j+g[i]],d[j]+p[i]);
                    smax=max(smax,j+g[i]);
                }
    }
    smax=0;
    for(register int i=1; i<=gmax; ++i)
        smax=max(smax,d[i]);
    printf("%d\n",smax);
    return 0;
}