Cod sursa(job #1567252)

Utilizator tc_iuresiures tudor-cristian tc_iures Data 13 ianuarie 2016 00:11:50
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#include <fstream>

using namespace std;

const int Nmax = 5005;
const int Gmax = 10005;

int N, G;
int A[3][Gmax];
pair<int,int> ob[Nmax];

void read()
{
    ifstream f("rucsac.in");
    f >> N >>G;
    for(int i = 1; i <= N; i ++)
    {
        f >> ob[i].first;
        f >> ob[i].second;
    }
    f.close();
}

int max(int x, int y)
{
   if(x >= y)
   {
       return x;
   }
   return y;
}

void solve()
{
    for(int i = 1; i <= N; i ++)
    {
        for(int j = 1; j <= G; j ++)
        {
            if(ob[i].first <= j)
            {
                A[2][j] = max(A[1][j], A[1][j-ob[i].first]+ob[i].second);
            }
        }
        for(int j = 1; j <= G; j ++)
        {
            A[1][j] = A[2][j];
        }
    }
}

void print()
{
    ofstream g("rucsac.out");
    g << A[2][G];
    g.close();
}

int main()
{
    read();
    solve();
    print();
    return 0;
}