Pagini recente » Cod sursa (job #1018627) | Cod sursa (job #3192173) | Cod sursa (job #2653454) | Cod sursa (job #3129338) | Cod sursa (job #2163156)
#include <iostream>
#include <fstream>
std::ifstream fin ("energii.in");
std::ofstream fout ("energii.out");
const int MaxN = 1001, MaxW = 15001;
const long long Inf = 2 * 0x3f3f3f3f;
int n, W, e[MaxN], c[MaxN];
long long a[MaxW], minim;
void ReadData();
void Solve();
void Write();
int main ()
{
ReadData();
Solve();
Write();
}
void ReadData()
{
fin >> n;
fin >> W;
for (int i = 1; i <= n; ++i)
fin >> e[i] >> c[i];
}
void Solve()
{
for (int i = 0; i <= MaxW; ++i)
a[i] = Inf;
a[0] = 0;
for (int i = 1; i <= n; ++i)
for (int j = W; j >= 0; --j)
if (a[j] != Inf && a[j + e[i]] > a[j] + c[i])
a[j + e[i]] = a[j] + c[i];
minim = Inf;
for (int i = W; i <= MaxW; ++i)
if (a[i] < minim)
minim = a[i];
}
void Write()
{
if (minim != Inf)
fout << minim;
else
fout << "-1";
}