Cod sursa(job #2974817)

Utilizator dobreraduDobre Radu Fabian dobreradu Data 4 februarie 2023 18:09:08
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <bits/stdc++.h>

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

const int NMAX = 5005;
const int KMAX = 10005;
int p[NMAX], g[NMAX], dp[2][KMAX];
int main()
{
    int n, k;
    in >> n >> k;
    for( int i = 1 ; i <= n ; i++ )
        in >> g[i] >> p[i];
    dp[0][g[1]] = p[1];

    for( int i = 2 ; i <= n ; i++ )
        for( int j = k ; j >= 0 ; j-- )
            if( j >= g[i] )
                dp[1 - i%2][j] = max( dp[i%2][j - g[i]] + p[i], dp[i%2][j] );
            else
                dp[1 - i%2][j] = dp[i%2][j];
    int rez = 0;
    for( int i = 0 ; i <= k ; i++ )
        rez = max ( rez, dp[1-n%2][i]);
    out << rez;
    return 0;
}