Cod sursa(job #1656369)

Utilizator mateibanuBanu Matei Costin mateibanu Data 19 martie 2016 11:16:15
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <stdio.h>

using namespace std;

FILE*f=fopen("rucsac.in","r");
FILE*h=fopen("rucsac.out","w");
int g[5010],c[5010],cmax[5000010];
//complexitate n*gmax
int main()
{
    int n,gmax,i,j,mx,sol;
    fscanf(f,"%d%d",&n,&gmax);
    for (i=1;i<=n;i++) fscanf(f,"%d%d",&g[i],&c[i]);

    cmax[0]=0;
    mx=0;
    for (i=1;i<=n;i++)
        for (j=mx;j>=0;j--)
            if (cmax[j+g[i]]<cmax[j]+c[i]&&j+g[i]<=gmax&&(!j||cmax[j]))
            {
                cmax[j+g[i]]=cmax[j]+c[i];
                if (j+g[i]>mx) mx=j+g[i];
            }
    sol=0;
    for (i=0;i<=gmax;i++)
        if (cmax[i]>sol) sol=cmax[i];
    fprintf(h,"%d",sol);
    fclose(h);
    fclose(f);
    return 0;
}