Cod sursa(job #1921698)

Utilizator Valentin0709Datcu George Valentin Valentin0709 Data 10 martie 2017 13:56:08
Problema Problema rucsacului Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<stdio.h>
#include<algorithm>
using namespace std;

#define in "rucsac.in"
#define out "rucsac.out"

FILE*f=fopen(in,"r");
FILE*g=fopen(out,"w");

int maxc,n,i,gmax,j,gi,cmaxim;
int cmax[10005];

struct obiect{
    int c,g;
} ob[5005];


int main() {

    fscanf(f,"%d%d",&n,&gmax);

    for(i=1;i<=n;i++) fscanf(f,"%d%d",&ob[i].g,&ob[i].c);

    for(i=1;i<=n;i++)
        for(j=maxc;j>=0;j--)
            if(cmax[j+ob[i].g]<cmax[j]+ob[i].c&&j+ob[i].g<=gmax&&(cmax[j]!=0||j==0)) {
                cmax[j+ob[i].g]=cmax[j]+ob[i].c;
                if(j+ob[i].g>maxc) maxc=j+ob[i].g;
            }

    for(i=0;i<=gmax;i++)
        if(cmax[i]>cmaxim) cmaxim=cmax[i];


    fprintf(g,"%d",cmaxim);

    fclose(f); fclose(g);

    return 0;
}