Cod sursa(job #1656365)

Utilizator mateibanuBanu Matei Costin mateibanu Data 19 martie 2016 11:05:41
Problema Problema rucsacului Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <stdio.h>

using namespace std;

FILE*f=fopen("rucsac.in","r");
FILE*h=fopen("rucsac.out","w");

//complexitate n*gmax
int main()
{
    long long n,gmax,i,j,mx,cmax[10002]={0},sol,g[5002],c[5002];
    fscanf(f,"%lld%lld",&n,&gmax);
    for (i=1;i<=n;i++) fscanf(f,"%lld%lld",&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,"%lld",sol);
    fclose(h);
    fclose(f);
    return 0;
}