Pagini recente » Cod sursa (job #2194842) | Cod sursa (job #1744733) | Cod sursa (job #2421256) | Cod sursa (job #1341817) | Cod sursa (job #489380)
Cod sursa(job #489380)
# include <fstream>
# include <iostream>
# define DIM 1003
# define infinit 1000000000
using namespace std;
int g, w, e[DIM], c[DIM], h[10*DIM], cmin=infinit, s, v[10*DIM];
void read ()
{
ifstream fin ("energii.in");
fin>>g>>w;
for (int i=1;i<=g;++i)
fin>>e[i]>>c[i], s+=e[i];
}
void solve ()
{
for(int i=1;i<=s && i<=10*DIM-3;++i)
h[i]=infinit;
for(int i=1;i<=s && i<=10*DIM;++i)
for(int j=1;j<=g;++j)
if (i-e[j]>=0 && h[i-e[j]]!=infinit)
{
int p=i-e[j], pp=0;
if (h[i-e[j]]+c[j]<h[i] && (i<w || (i>=w && h[i-e[j]]+c[j]<cmin)))
{
while (p>0 && !pp)
{
if (v[p]==j)pp=1;
p=p-e[v[p]];
}
if (!pp)h[i]=h[i-e[j]]+c[j], v[i]=j;
if (i>=w && h[i]<cmin)cmin=h[i];
}
}
}
int main ()
{
read ();
ofstream fout ("energii.out");
if (s<w)fout<<"-1";
else
{
solve ();
fout<<cmin;
}
return 0;
}