Cod sursa(job #614302)

Utilizator Luncasu_VictorVictor Luncasu Luncasu_Victor Data 5 octombrie 2011 22:28:06
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <stdio.h>
#define Max(x,y) (x)>(y)?(x):(y)

class problem{
    int n,g,G[10001];
    public:
        problem();
        ~problem();
        void add(int,int);
};

void problem::add(int x,int y){
    int i;
        for(i=g-x;i>=0;i--)
        if(G[i]!=0)
        G[i+x]=Max(G[i+x],G[i]+y);
}

problem::problem(){
    int i;
    freopen("rucsac.in","r",stdin);
    freopen("rucsac.out","w",stdout);
        scanf("%d%d",&n,&g);
        for(i=0;i<=g;i++)G[i]=0;
        for(i=1;i<=n;i++){
            int x,y;
            scanf("%d%d",&x,&y);
            add(x,y);
            G[x]=Max(G[x],y);}
}

problem::~problem(){
    int max=0,i;
    for(i=0;i<=g;i++)if(G[i]>max)max=G[i];
        printf("%d\n",max);
}

int main(){
    problem rucsac;
}