Pagini recente » Cod sursa (job #2289554) | Cod sursa (job #1651285) | Istoria paginii runda/pregatire_oji_11-12_/clasament | Cod sursa (job #2510840) | Cod sursa (job #2272259)
#include <fstream>
#include <iostream>
#define Nmax 1003
#define INF (1<<29)
using namespace std;
string file="energii";
ifstream f( (file + ".in").c_str() );
ofstream g( (file + ".out").c_str() );
struct pwr{
int e, c;
}a[Nmax];
int k[Nmax][5*Nmax];
int n, w, et;
int main()
{
f >> n >> w;
for (int i = 1; i <= n; i++)
{
f >> a[i].e >> a[i].c;
et+=a[i].e;
}
if(et < w)
{
g << "-1";
return 0;
}
//k[i][j]=costul minim din primele i generatoare cu costul j
for (int i = 0; i <= n; i++)
k[i][0]=INF;
for (int j = 0; j <= w; j++)
k[0][j]=INF;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= w; j++)
{
if(j-a[i].c < 0) k[i][j]=min(k[i-1][j], a[i].e);
k[i][j]=min(k[i-1][j], a[i].e+k[i-1][j-a[i].c]);
}
/*for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= w; j++)
cout << k[i][j] << " ";
cout << '\n';
}*/
g << k[n][w];
return 0;
}