Pagini recente » Cod sursa (job #302769) | Cod sursa (job #2677575) | Cod sursa (job #200781) | Cod sursa (job #1028271) | Cod sursa (job #2272280)
#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;
}
for (int i = 0; i <= n; i++)
k[i][0]=INF;
for (int i = 0; i <= w; i++)
k[0][i]=INF;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= w; j++)
{
if(j <= a[i].e)
k[i][j]=min(k[i-1][j], a[i].c);
else
k[i][j]=min(k[i-1][j], k[i-1][j-a[i].e]+a[i].c);
}
g << k[n][w];
return 0;
}