Cod sursa(job #1436097)

Utilizator Andreiii500Andrei Puiu Andreiii500 Data 15 mai 2015 03:55:57
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<stdlib.h>
#include<fstream>
using namespace std;

#define dim 10005

ifstream in("rucsac.in");
ofstream out("rucsac.out");

struct obiect
{
    int val,gr;
};

obiect v[dim];
int valmax[dim];
int n,g;

int compar(const void *a, const void *b)
{
    obiect *x, *y;
    x=(obiect*)a;
    y=(obiect*)b;

    return x->gr - y->gr;
}

int main()
{
    int i,j;

    in>>n>>g;
    for(i=1;i<=n;++i) in>>v[i].gr>>v[i].val;

    qsort(v+1, n, sizeof(obiect), compar);

    //for(i=1;i<=n;++i) out<<v[i].gr<<" "<<v[i].val<<"\n"; out<<"\n";

    for(i=1;i<=n;++i)
        for(j=g; j>=v[i].gr; --j)
            if(valmax[j-v[i].gr]+v[i].val > valmax[j]) valmax[j] = valmax[j-v[i].gr]+v[i].val;

    //for(i=1;i<=g;++i) out<<valmax[i]<<" "; out<<"\n";

    out<<valmax[g];

    return 0;
}