Pagini recente » Istoria paginii runda/concurs_11_12_02_25 | Cod sursa (job #1291700) | Cod sursa (job #1716766) | Cod sursa (job #936732) | Cod sursa (job #1899743)
#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;
}