Pagini recente » Cod sursa (job #2948979) | Cod sursa (job #1880856) | Cod sursa (job #1745869) | Cod sursa (job #390633) | Cod sursa (job #644340)
Cod sursa(job #644340)
#include <fstream>
using namespace std;
#define MAX_N 1002
#define MAX_W 10002
#define INF 0x3f3f3f3f
ifstream fin("energii.in");
ofstream fout("energii.out");
void Read();
void Knapsack();
void Write();
int n;
int S;
int g[MAX_N], v[MAX_W]; // energia produsa, costul repornirii
int c[MAX_W];
int main()
{
Read();
Knapsack();
Write();
fin.close();
fout.close();
}
void Read()
{
fin >> n >> S;
for ( int i = 1; i <= n; ++i )
fin >> g[i] >> v[i];
}
void Knapsack()
{
for ( int i = 0; i <= MAX_W; ++i )
c[i] = INF;
c[0] = 0;
for ( int i = 1; i <= n; ++i )
for ( int j = S; j >= 0; --j )
if ( c[j] != INF && c[j+g[i]] > c[j] + v[i] )
c[j+g[i]] = c[j] + v[i];
}
void Write()
{
int sol = INF;
int minim = INF;
for ( int j = S; j <= MAX_W; ++j )
if ( c[j] != INF && c[j] < minim )
minim = c[sol = j];
if ( sol != INF )
fout << c[sol] << '\n';
else
fout << "-1\n";
}