Pagini recente » Cod sursa (job #26202) | Cod sursa (job #1032534) | Cod sursa (job #902086) | Cod sursa (job #2859338) | Cod sursa (job #1083577)
#include <fstream>
#include <cstring>
using namespace std;
ifstream is("rucsac.in");
ofstream os("rucsac.out");
int n, s;
int suma;
int g[5001], v[5001];
int q[10001];
int main()
{
is >> n >> s;
for ( int i = 1; i <= n; ++i )
is >> g[i] >> v[i];
memset(q, -1, 10001);
q[0] = 0;
for ( int i = 1; i <= n; ++i )
{
for ( int j = suma + g[i]; j >= g[i]; --j )
if ( q[j - g[i]] != -1 && q[j - g[i]] + v[i] > q[j] )
q[j] = q[j - g[i]] + v[i];
suma += g[i];
}
for ( int i = s; i > -1; --i )
if ( q[i] != -1 )
{
os << q[i];
break;
}
is.close();
os.close();
return 0;
}