Cod sursa(job #1429825)

Utilizator alexandru.jercaianuJercaianu Alexandru alexandru.jercaianu Data 7 mai 2015 11:55:37
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 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, 0), r2(G + 1, - 1);
    
    for (int i = 0; i < N; i++) {
        for (int j = 0; j <= G; j++) {
            if (j - g[i] >= 0) {
                r2[j] = max(r1[j], r1[j - g[i]] + p[i]); 
            }
        }
        r1 = r2;
    }

    fout << r2[G];
}