Cod sursa(job #2173594)

Utilizator NannyiMaslinca Alecsandru Mihai Nannyi Data 15 martie 2018 22:59:23
Problema Problema rucsacului Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <iostream>
#include <fstream>
using namespace std;
#define nmax 5005
#define gmax 100005
ifstream f("rucsac.in");
ofstream g("rucsac.out");

int n,gre[nmax],v[nmax],GMax;
int dp[3][gmax];

void read()
{
    f>>n>>GMax;
    for (int i=1; i<=n; ++i)
        f>>gre[i]>>v[i];
}

void solve()
{
    for (int i=1; i<=n; ++i)
    {
        for (int j=0; j<=GMax; ++j)
        {
            if (gre[i]>j)
                dp[1][j]=dp[2][j];
            else
                dp[1][j]=max(dp[2][j],dp[2][j-gre[i]]+v[i]);
        }
        for (int hh=0; hh<=gmax; ++hh)
            dp[2][hh]=dp[1][hh];
    }
    g<<dp[1][GMax];
}

int main()
{
    read();
    solve();
    return 0;
}