Cod sursa(job #1427173)

Utilizator IoanZioan zahiu IoanZ Data 1 mai 2015 17:27:30
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <cstdio>
#include <algorithm>

using namespace std;

const int DMAX=10005;

int d[DMAX];

int main()
{
    freopen("rucsac.in","r",stdin);
    freopen("rucsac.out","w",stdout);
    int n,gmax,i,g,p,dr,pmax,j;
    d[0]=0;
    scanf("%d%d",&n,&gmax);
    for (i=1;i<=gmax;i++)
         d[i]=-1;
    dr=0;
    pmax=0;
    for (i=1;i<=n;i++)
    {
        scanf("%d%d",&g,&p);
        for (j=dr;j>=0;j--)
             if (j+g<=gmax)
                 if (d[j]!=-1)
                     if (d[j+g]<d[j]+p)
                     {
                         d[j+g]=d[j]+p;
                         if (j+g>dr)
                             dr=j+g;
                     }
    }
    for (i=gmax;i>0;i--)
         if (pmax<d[i])
             pmax=d[i];
    printf("%d",pmax);
    return 0;
}