Pagini recente » Borderou de evaluare (job #2002037) | Cod sursa (job #568198) | Borderou de evaluare (job #2022006) | Borderou de evaluare (job #1034102) | Cod sursa (job #1643210)
#include <fstream>
#include <cstring>
#define GMax 1001
#define WMax 5001
#define INF 2e8
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
int e[GMax], c[GMax], a[WMax], b[WMax], G, W;
int mn;
void Citire()
{
int i;
fin >> G >> W;
for (i = 1; i <= G; ++ i)
fin >> e[i] >> c[i];
}
void Energii()
{
int i, j;
for (i = 1; i <= W; ++ i)
a[i] = b[i] = INF;
for (i = 1; i <= G; ++ i)
{
for (j = 1; j <= W; ++ j)
if(j - e[i] >= 0) b[j] = min(a[j], a[j - e[i]] + c[i]);
else b[j] = min(a[j], c[i]);
memcpy(a, b, sizeof(b));
}
}
int main()
{
Citire();
fin.close();
Energii();
if (a[W] != INF) fout << a[W] << "\n";
else fout << -1 << "\n";
fout.close();
return 0;
}