Cod sursa(job #2713268)

Utilizator Razvan_GabrielRazvan Gabriel Razvan_Gabriel Data 27 februarie 2021 16:10:04
Problema Problema rucsacului Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <fstream>

using namespace std;

int n,g;
int smax;

typedef struct obiect_t {
    int val;
    int greutate;
} obiect;

obiect obiecte[5000];

void recursiv(int k, int gc, int pc) {
    int tgc=gc+obiecte[k].greutate;
    int valk=obiecte[k].val;

    bool nultim=k<n-1;
    k++;
    if(tgc<=g) {
        int tpc=pc+valk;
        if(tpc>smax)
            smax=tpc;
        if(tgc<g && nultim)
            recursiv(k,tgc,tpc);
    }
    if(nultim)
        recursiv(k,gc,pc);

}

int main() {
    FILE*cfin,*cfout;
    cfin=fopen("rucsac.in","r");
    cfout=fopen("rucsac.out","w");

    fscanf(cfin,"%d%d",&n,&g);
    for(int i=0; i<n; i++)
        fscanf(cfin,"%d%d",&obiecte[i].greutate,&obiecte[i].val);

    recursiv(0,0,0);

    fprintf(cfout,"%d",smax);

    return 0;
}