Cod sursa(job #1899743)

Utilizator felipeGFilipGherman felipeG Data 2 martie 2017 21:59:08
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <cstdio>
#include <algorithm>
#define MAXN 5010
#define MAXG 10010
using namespace std;

int N, G, Pmax;
int W[MAXN], P[MAXN];
int D[2][MAXG];

int main()
{
    freopen("energii.in", "r", stdin);
    freopen("energii.out", "w", stdout);

    scanf( "%d%d", &N, &G );

    for ( int i = 1; i <= N; ++ i )
        scanf( "%d%d", &W[ i ], &P[ i ] );


    int l = 0;
    for ( int i = 1; i <= N; ++i, l = 1 - l )
        for ( int cw = 0; cw <= G; ++ cw )
        {
            D[ 1 - l ][ cw ] = D[ l ][ cw ];

            if ( W[ i ] >= cw )
                D[ 1 - l ][ cw ] = max( D[ 1 - l ][ cw ], D[ l ][ cw - W[ i ] ] + P[ i ] );
        }

    Pmax = D[ l ][ 0 ];

    printf( "%d\n", Pmax );

    return 0;
}