Cod sursa(job #1921658)

Utilizator Valentin0709Datcu George Valentin Valentin0709 Data 10 martie 2017 13:45:13
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 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 n,i,gmax,j,gi,cmaxim;
int use[10005],cmax[100005];

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

int comp(obiect a,obiect b) {
    return a.g<b.g;
}

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=cmaxim;j>=0;j--)
            if(cmax[j+ob[i].g]<cmax[j]+ob[i].c&&(j+ob[i].g<=gmax||j==0)) {
                cmax[j+ob[i].g]=cmax[j]+ob[i].c;
                if(cmax[j+ob[i].g]>cmaxim) cmaxim=cmax[j+ob[i].g];

                //for(k=1;k<=n;k++) use[j+ob[i].g][k]=use[j][k];
                //use[j+ob[i].g][i]=1;
            }


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

    fclose(f); fclose(g);

    return 0;
}