Pagini recente » Cod sursa (job #397676) | Cod sursa (job #2376386) | Cod sursa (job #1402628) | Cod sursa (job #2382160) | Cod sursa (job #1230574)
#include <fstream>
using namespace std;
ifstream fin( "energii.in" );
ofstream fout( "energii.out" );
const int MAXG = 1010;
const int MAXW = 10010;
const int INF = 0x3f3f3f3f;
int G[MAXG];
int E[MAXG];
int NG, W;
bool ok[MAXW];
int c[MAXW];
int maxim;
int minim = INF;
int main()
{
int i, j;
for ( i = 1; i < MAXW; i++ )
c[i] = INF;
fin >> NG >> W;
for ( i = 1; i <= NG; i++ )
fin >> G[i] >> E[i];
ok[0] = true;
for ( i = 1; i <= NG; i++ )
for ( j = maxim; j >= 0; j-- )
if ( ok[j] && ( c[j + G[i]] > c[j] + E[i] ) )
{
ok[j + G[i]] = true;
c[j + G[i]] = c[j] + E[i];
if ( j + G[i] < W && j + G[i] > maxim )
maxim = j + G[i];
if ( j + G[i] >= W && c[j + G[i]] < minim )
minim = c[j + G[i]];
}
if ( minim != INF )
fout << minim << '\n';
else
fout << "-1\n";
fin.close();
fout.close();
return 0;
}