Pagini recente » Cod sursa (job #2134883) | Cod sursa (job #39838) | Cod sursa (job #1835001) | Cod sursa (job #1483182) | Cod sursa (job #1899688)
#include <fstream>
using namespace std;
ifstream f ("rucsac.in");
ofstream g ("rucsac.out");
int n, G, D[ 2 ][ 10000 ];
struct cell
{
int w, p;
}v[ 5001 ];
void read()
{
int i = 0;
f >> n >> G;
for ( i = 1; i <= n; ++ i )
f >> v[ i ].w >> v[ i ].p;
}
void solve()
{
int i, j, s = 0;
for ( i = 1; i <= n; ++ i, s = 1 - s )
{
for ( j = 0; j <= G; ++ j )
{
D[ 1 - s ][ j ] = D[ s ][ j ];
if ( v[ i ].w <= j )
D[ 1 - s ][ j ] = max( D[ 1 - s ][ j ], D[ s ][ j - v[ i ].w ] + v[ i ].p );
}
}
g << D[ s ][ G ];
}
int main()
{
read();
solve();
f.close();
g.close();
return 0;
}