Cod sursa(job #2401262)

Utilizator cyg_andrei_HHendoreanu Andrei Sebastian cyg_andrei_H Data 9 aprilie 2019 16:06:48
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda excelenta-tema5 Marime 0.77 kb
#include <cstdio>

using namespace std;

const int NMAX=10000;
int d[NMAX+5];
int main()
{
    freopen("rucsac.in","r",stdin);
    freopen("rucsac.out","w",stdout);
    int n,G,i,j,p,g,last,ans;
    scanf("%d%d",&n,&G);
    for(i=1;i<=G;++i)
        d[i]=-1;
    last=0;
    for(i=1;i<=n;++i)
    {
        scanf("%d%d",&g,&p);
        if(g>G)
            continue;
        for(j=last;j>=0;--j)
        {
            if(j+g>G||d[j]==-1)
                continue;
            if(d[j]+p>d[g+j])
            {
                d[g+j]=d[j]+p;
                if(g+j>last)
                    last=g+j;
            }
        }
    }
    ans=0;
    for(i=0;i<=last;++i)
        if(ans<d[i])
            ans=d[i];
    printf("%d\n",ans);
    return 0;
}