Cod sursa(job #1936627)

Utilizator CammieCamelia Lazar Cammie Data 23 martie 2017 11:28:57
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.14 kb
#include <fstream>
#include <stdio.h>

#define MAXN 5012
#define MAXG 10012

FILE *fin, *fout;

using namespace std;

//ifstream fin("rucsac.in");
//ofstream fout("rucsac.out");

int n, g;
int castig[3][MAXG];
int p[MAXN], gr[MAXN];

inline void Read()
{
   // fin >> n >> g;

    fscanf(fin, "%d %d", &n, &g);

    for (int i = 1; i <= n; i++)
    {
       // fin >> gr[i] >> p[i];
       fscanf(fin, "%d %d", &gr[i], &p[i]);
    }
}

inline void Solve()
{
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= g; j++)
        {
            if (j - gr[i] >= 0)
            {
                castig[2][j] = max(castig[1][j - gr[i]] + p[i], castig[1][j]);
            }
            else
                castig[2][j] = castig[1][j];
        }

        for (int j = 1; j <= g; j++)
            castig[1][j] = castig[2][j];
    }

    //fout << castig[n][g];
    fprintf(fout, "%d", castig[1][g]);
}

int main ()
{
    fin = fopen("rucsac.in", "r");
    fout = fopen("rucsac.out", "w");

    Read();
    Solve();

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