Cod sursa(job #2119047)

Utilizator CozmaCatalinCozma Catalin CozmaCatalin Data 31 ianuarie 2018 16:35:12
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int MAXN = 5005;
const int MAXG = 10005;

int D[MAXN][MAXG];
int G[MAXN];
int C[MAXN];

int N,Greutate;

void Read()

{
    in >> N >> Greutate;

    for ( int i = 1; i <= N ;++i)
    {
        int x,y;
        in >> x>>y;
        G[i] = x;
        C[i] = y;
    }
}

void Rucsac()
{
    int i = 1;
    if(G[i] <= Greutate )
        D[1][G[i]] = C[1];
    else D[1][G[i]] = 0;

    for ( i = 2 ; i <= N ; ++i)
        for ( int j = 0 ; j <= Greutate ; ++j)
    {
        D[i][j] = C[j];
        if(G[i] <= j)
            D[i][j] = max(D[i-1][j] , D[i-1][j-G[i]]+C[i]);
    }
    int Maxim = D[N][1];

    for ( int j = 2; j <= Greutate ; ++j)
        Maxim = max(Maxim,D[N][j]);

    out << Maxim;

}

int main()
{
    Read();
    Rucsac();
}