Cod sursa(job #1944891)

Utilizator MaligMamaliga cu smantana Malig Data 29 martie 2017 11:58:15
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <fstream>
#include <cmath>
#include <vector>
#include <queue>

using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");

const int NMax = 5e3 + 5;
const int GMax = 1e4 + 5;
typedef long long ll;

int N,G;
int dp[2][GMax];

int main()
{
    in>>N>>G;
    for (int i=1;i<=N;++i) {
        int gr,pr;
        in>>gr>>pr;

        for (int j=1;j<=G;++j) {
            dp[1][j] = dp[0][j];

            int val = j - gr;
            if (val >= 0 && dp[1][j] < dp[0][val] + pr) {
                dp[1][j] = dp[0][val] + pr;
            }
        }

        for (int j=1;j<=G;++j) {
            dp[0][j] = dp[1][j];
        }
    }
    out<<dp[0][G]<<'\n';

    in.close();out.close();
    return 0;
}