Cod sursa(job #1097233)

Utilizator malina_floreaMalina Florea malina_florea Data 3 februarie 2014 11:14:57
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>
#define DMAX 10010
#define NMAX 5010
using namespace std;
ifstream fin ("rucsac.in");
ofstream fout ("rucsac.out");

void citire();
void pd();
void afisare();

int n, G;
int profit[DMAX];
int g[NMAX], p[NMAX];

int main()
{
    citire();
    pd();
    afisare();

    fin.close();
    fout.close();
    return 0;
}

void citire()
{
    int i;
    fin>> n>> G;
    for (i=1; i<=n; i++)
         fin>> g[i]>> p[i];
}

void pd()
{
    int i, j;
    for(i=1; i<=G; i++)
        profit[i] = -1;

    profit[0] = 0;
    for (i=1; i<=n; i++)
         for (j=G-g[i]; j>=0 ; j--)
              if (profit[j]!=-1 && profit[j]+p[i] > profit[j+g[i]])
                  profit[j+g[i]] = profit[j] + p[i];
}

void afisare()
{
    int i, maxim;

    maxim=profit[1];
    for (i=2; i<=G; i++)
         if (profit[i]>maxim)
             maxim=profit[i];
    fout<< maxim<< "\n";
}