Cod sursa(job #1943467)

Utilizator MaligMamaliga cu smantana Malig Data 28 martie 2017 16:53:45
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include <fstream>
#include <cmath>
#include <vector>
#include <algorithm>

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];

struct elem {
    int w,p;
}v[NMax];

int main()
{
    in>>N>>G;
    for (int i=1;i<=N;++i) {
        in>>v[i].w>>v[i].p;

        for (int j=1;j<=G;++j) {

            dp[1][j] = dp[0][j];
            int val = j - v[i].w;
            if (0 <= val && dp[1][j] < dp[0][val] + v[i].p) {
                dp[1][j] = dp[0][val] + v[i].p;
            }
        }

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

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