Cod sursa(job #819526)

Utilizator cristian.ion94Ion Cristian cristian.ion94 Data 19 noiembrie 2012 11:01:47
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>
#define DMAX 50000
using namespace std;

int n, GMax;
int used[DMAX];
int CMax[DMAX];

void Citire();
void pd();
void show();

int main()
{
    Citire();
    pd();
    afisare();
    return 0;
}

void Citire()
{
    ifstream fin("rucsac.in");

    fin >> n;
    fin >> GMax;

    int i;
    for(i = 1; i <= n; i++)
    {
        fin >> g[i] >> c[i];
    }

    fin.close();
}

void pd()
{
    int i,j, G;
    int max = -1;
    for(G = GMax ; G >= 0; G--)
    {
        max = -1;
        for(i = 1; i <= n; i++)
        {
            if(c[i] + CMax[G-g[i]] > max && g[i] <= G && !used[G-g[i]][i])
            {
                max = c[i] + CMax[G-g[i]];
            }
        }

        CMax[G] = max;
        for(j = 1; j <= n; j++)
        {
            if(j!=i)
            {
                used[G][j] = used[G-g[i]][j];
            }
        }
        used[G][i] = 1;
    }
}

void show()
{
    ofstream fout("rucsac.out");

    fout << CMax[0] << '\n';

    fout.close();
}