Cod sursa(job #864340)

Utilizator macajouMaca George macajou Data 24 ianuarie 2013 21:10:27
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <cstdio>

int n,gmax,pr[5001],g[5001],a[10001],i,j,mat[100][50],max,pozmax;

int main()
{
    freopen("rucsac.in","r",stdin);
    freopen("rucsac.out","w",stdout);

    scanf("%d%d",&n,&gmax);
    for(i=1;i<=n;i++)
        scanf("%d%d",&g[i],&pr[i]);
    for(i=1;i<=gmax;i++)
        a[i]=-1;
    a[g[1]]=pr[1];
    mat[g[1]][1]=1;
    mat[g[1]][0]=1;
    int k;
    for(i=2;i<=n;i++)
        {
            for(j=gmax-g[j];j>=0;j--)
                if(a[j]!=-1 && a[j]+pr[i]>a[j+g[i]])
                   {
                       a[j+g[i]]=a[j]+pr[i];
                       if(a[j+g[i]]>max)
                          {
                              max=a[j+g[i]];
                              pozmax=j+g[i];
                          }
                       //for(k=1;k<=mat[j][0];k++)
                          // mat[j+g[i]][k]=mat[j][k];
                       //mat[j+g[i]][k]=i;
                       //mat[j+g[i]][0]=k;
                   }
        }
    printf("%d\n",max);
    //for(i=1;i<=mat[pozmax][0];i++)
        //printf("%d ",mat[pozmax][i]);

    return 0;
}