Cod sursa(job #2820030)

Utilizator KarinaDKarina Dumitrescu KarinaD Data 19 decembrie 2021 18:22:14
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <fstream>

using namespace std;

const int N = 5001;
int g [ N ], p [ N ], profit [ N ][ 2 * N ];

int main ( ) {
    
    ifstream fin ( "rucsac.in" );
    ofstream fout ( "rucsac.out" );
    
    int n, G, i, j, s = 0;
    
    fin >> n >> G;
    
    for ( i = 1; i <= n; i++ )
        fin >> g [ i ] >> p [ i ];
    
    for ( i = 1; i <= n; i++ )
        for ( j = 1; j <= G; j++ )
            if ( j >= g [ i ] )
                profit [ i % 2 ][ j ] = max ( profit [ 1 - i % 2 ][ j ], p [ i ] + profit [ 1 - i % 2 ][ j - g [ i ] ] );
            else
                profit [ i % 2 ][ j ] = profit [ 1 - i % 2 ][ j ];
        
    for ( i = 1; i <= G; i++ )
        s = max ( s, profit [ n % 2 ][ i ] );

    
    fout << s;
    
    return 0;
}