Cod sursa(job #1076371)

Utilizator IeewIordache Bogdan Ieew Data 10 ianuarie 2014 02:36:40
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>

using namespace std;

#define DEBUG false
#define MAXN 5001
#define MAXG 10001

#if DEBUG
#include <iostream>
#define INFILE "/Users/biordach/Documents/Xcode Projects/training/training/rucsac.in"
#define __OUT cout
#else
#define INFILE "rucsac.in"
#define OUTFILE "rucsac.out"
ofstream __OUT(OUTFILE);
#endif

int n, G;
int g[MAXN], p[MAXN];
int sol[MAXG];

void readInput();
void solve();
void printOutput();

int main(int argc, const char * argv[])
{
    readInput();
    solve();
    printOutput();

#if DEBUG == false
    __OUT.close();
#endif
    
    return 0;
}

int maxim(int a, int b){
    return a > b ? a: b;
}

void readInput(){
    ifstream in(INFILE);
    in>>n>>G;
    for(int i=0;i<n;i++){
        in>>g[i]>>p[i];
    }
    in.close();
}

void solve(){
    for(int i=0;i<n;i++)
        for (int j = G; j>=g[i];j--) {
            sol[j] = maxim(sol[j], sol[j-g[i]] + p[i]);
        }
}

void printOutput(){
    __OUT<<sol[G]<<'\n';
}