Pagini recente » Cod sursa (job #2636488) | Cod sursa (job #2931677) | Cod sursa (job #529172) | Cod sursa (job #1959609) | Cod sursa (job #412695)
Cod sursa(job #412695)
#include <fstream>
#define wmax 5005
#define gmax 1005
#define inf 32000
using namespace std;
ifstream f("energii.in");
ofstream gout("energii.out");
struct generator { int e,cost; } g[gmax];
int sol[wmax],uz[wmax][gmax],s[wmax],gen,w;
void citire ()
{
f>>gen>>w;
for (int i=1; i<=gen; i++)
f>>g[i].e>>g[i].cost;
f.close ();
}
int cost ()
{
int i,j;
for (i=1; i<=w; i++)
s[i]=inf;
s[0]=0;
for (i=1; i<=gen; i++)
for (j=0; j<=w; j++)
if (i+g[i].e<w)
{
if (s[j+g[i].e]>s[j]+g[i].cost)
s[j+g[i].e]=s[j]+g[i].cost;
}
else
if (s[w]>s[j]+g[i].cost)
s[w]=s[j]+g[i].cost;
if (s[w]==inf) return -1;
return s[w];
}
int main ()
{
citire ();
gout<<cost ();
gout.close (); return 0;
}