Cod sursa(job #1110794)

Utilizator Ionut228Ionut Calofir Ionut228 Data 18 februarie 2014 13:23:16
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <fstream>
#include <algorithm>

using namespace std;

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

int N, G;
int W[5002], P[5002];
int best[2][10010];

int main()
{
    fin >> N >> G;
    for (int i = 1; i <= N; ++i)
        fin >> W[i] >> P[i];

    int pos = 0;
    for (int i = 1; i <= N; ++i)
    {
        for (int gr = 0; gr <= G; ++gr)
        {
            best[1 - pos][gr] = best[pos][gr];

            if (W[i] <= gr)
                best[1 - pos][gr] = max(best[pos][gr], best[pos][gr - W[i]] + P[i]);

        }
        pos = 1 - pos;
    }

    fout << best[pos][G];

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