Cod sursa(job #1082334)

Utilizator lucianRRuscanu Lucian lucianR Data 14 ianuarie 2014 15:11:02
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <iostream>
#include <fstream>
#define N_MAX 5001
#define G_MAX 10001

using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");

int P[N_MAX][G_MAX], w[N_MAX], p[N_MAX], N, G;

int main()
{
    in >> N >> G;
    for(int i = 1; i <= N; i++)
        in >> w[i] >> p[i];

    for(int i = 1; i <= G; i++)
        if(w[1] <= i) P[1][i] = p[1];
    for(int i = 2; i <= N; i++)
        for(int j = 0; j <= G; j++)
            if(p[i] + P[i-1][j] >= P[i-1][w[i] + j]) P[i][w[i] + j] = p[i] + P[i-1][j];
            else P[i][w[i] + j] = P[i-1][w[i] + j];
    cout << P[N][G];
    return 0;
}