Pagini recente » Cod sursa (job #1385537) | Cod sursa (job #2261465) | Cod sursa (job #2135663) | Cod sursa (job #254867) | Cod sursa (job #1083612)
#include <fstream>
#include <cstring>
#define INF 0x3f3f3f3f
using namespace std;
ifstream is("energii.in");
ofstream os("energii.out");
int n, s;
long long suma, min1;
int p[1001], c[1001];
long long q[15005];
int main()
{
is >> n >> s;
for ( int i = 1; i <= n; ++i )
is >> p[i] >> c[i];
memset(q, -1, 0);
for ( int i = 1; i <= n; ++i )
{
for ( int j = suma + p[i]; j >= p[i]; --j )
if ( q[j - p[i]] != INF && q[j - p[i]] + c[i] > q[j] )
q[j] = q[j - p[i]] + c[i];
suma += p[i];
}
int i;
min1 = INF;
for ( i = s; i <= suma; ++i )
if ( q[i] != -1 )
{
if ( q[i] < min1 )
min1 = q[i];
}
if ( min1 == -1 )
os << "-1";
else
os << min1;
is.close();
os.close();
return 0;
}
/*
for ( int j = suma; j > -1; --j )
if ( q[j] != INF && q[j] + c[i] < q[j + p[i]] )
q[j + p[i]] = q[j] + c[i];
suma += p[i];
*/