Pagini recente » Algoritmiada 2014 - Clasament Runda 2, Clasele 11-12 | Cod sursa (job #2071314) | Cod sursa (job #413640) | Profil mihaistamatescu | Cod sursa (job #872912)
Cod sursa(job #872912)
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
#define maxN 5005
#define maxG 10005
int dp[3][maxG];
int N , G , P[maxN] , W[maxN];
int main()
{
freopen ("rucsac.in" , "r" , stdin);
freopen ("rucsac.out" , "w" , stdout);
scanf ("%d %d" , &N , &G);
for (int i = 1 ; i <= N ; ++i)
scanf ("%d %d" , &W[i] , &P[i]);
for (int i = 1 ; i <= N ; ++i)
for (int j = 1 ; j <= G ; ++j)
{
if (W[i] > j)
continue;
dp[i & 1][j] = max (dp[(i - 1) & 1][j] , dp[(i - 1) & 1][j - W[i]] + P[i]);
}
printf ("%d" , dp[N & 1][G]);
return 0;
}