Pagini recente » Cod sursa (job #1590718) | Statistici bad the ghoul (badghoul) | Cod sursa (job #61836) | Mozaic | Cod sursa (job #1899664)
#include <fstream>
using namespace std;
ifstream f ("rucsac.in");
ofstream g ("rucsac.out");
int n, G, v1[ 10001 ], v2[ 10001 ];
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;
for ( i = 1; i <= G; ++ i )
if ( i >= v[ 1 ].w )
v1[ i ] = v[ i ].p;
}
void solve()
{
int i, j;
for ( i = 2; i <= n; ++ i )
{
for ( j = 1; j <= G; ++ j )
{
if ( j >= v[ i ].w ) v2[ j ] = max( v1[ j ], v1[ j - v[ i ].w ] + v[ i ].p );
else v2[ j ] = v1[ j ];
}
if ( i < n )
{
for ( j = 1; j <= G; ++ j )
{
v1[ j ] = v2[ j ];
v2[ j ] = 0;
}
}
}
}
int main()
{
read();
solve();
g << v2[ G ];
f.close();
g.close();
return 0;
}