Cod sursa(job #1429833)

Utilizator alexandru.jercaianuJercaianu Alexandru alexandru.jercaianu Data 7 mai 2015 12:13:37
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<iostream>
#include<vector>
#include<fstream>
#include<algorithm>
using namespace std;

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

typedef long long ll;
int N, G;
int g[10001];
int p[10001];
int main() 
{
    fin >> N >> G;
    for (int i = 0; i < N; i++) {
        int x, y;
        fin >> x >> y;
        g[i] = x;
        p[i] = y;
    }

    vector<ll> r1(G + 1, -1), r2(G + 1, - 1);
    r1[0] = 0;
    for (int i = 0; i < N; i++) {
        for (int j = 0; j <= G; j++) {
            if (j - g[i] < 0) {
                r2[j] = r1[j];
            }
            else {
                r2[j] = max(r1[j], r1[j - g[i]] + p[i]); 
            }
        }
        r1 = r2;
    }

    fout << r2[G];
}