Pagini recente » Cod sursa (job #895165) | Cod sursa (job #3220118) | Cod sursa (job #53380) | Cod sursa (job #2358183) | Cod sursa (job #1049324)
#include <fstream>
#define NMAX 1001
#define WMAX 5001
#define oo 2000000000
using namespace std;
int N, W, energTotal;
int energ[NMAX], cost[NMAX];
int d[NMAX][WMAX];
void Read()
{
ifstream fin("energii.in");
fin >> N >> W;
for(int i = 1; i <= N; i++)
{
fin >> energ[i] >> cost[i];
energTotal += energ[i];
}
fin.close();
}
void Initializare()
{
for(int i = 0; i <= N; i++)
for(int j = 1; j <= W; j++)
d[i][j] = oo;
}
inline int Min(int x, int y)
{
return (x <= y) ? x : y;
}
void Solve()
{
Initializare();
for(int i = 1; i <= N; i++)
{
for(int e = 1; e <= W; e++)
{
d[i][e] = Min(d[i-1][e], cost[i]);
if(energ[i] <= W)
{
int p = W - energ[i];
d[i][e] = Min(d[i-1][e], cost[i] + d[i-1][p]);
}
}
}
int sol = d[N][W];
ofstream fout("energii.out");
if(sol == oo)
fout << "-1\n";
else
fout << sol << "\n";
fout.close();
}
int main ()
{
Read();
Solve();
return 0;
}