Pagini recente » Cod sursa (job #916444) | Cod sursa (job #785187) | Cod sursa (job #525521) | Cod sursa (job #1602855) | Cod sursa (job #489395)
Cod sursa(job #489395)
# include <fstream>
# include <iostream>
# define DIM 1003
# define EMax 10003
# define infinit 1000000000
using namespace std;
int g, w, e[DIM], c[DIM], h[EMax], cmin=infinit, s, M;
short int v[EMax];
void read ()
{
ifstream fin ("energii.in");
fin>>g>>w;
for (int i=1;i<=g;++i)
{
fin>>e[i]>>c[i], s+=e[i];
if(e[i]>M)
M=e[i];
}
}
void solve ()
{
int p, pp;
for(int i=1;i<=s && i<=2*w;++i)
h[i]=infinit;
for(int i=1;i<=s && i<=w+M;++i)
for(int j=1;j<=g;++j)
if (i-e[j]>=0 && h[i-e[j]]+c[j]<h[i])
{
for(p=i-e[j], pp=0;p>0 && !pp;p-=e[v[p]])
if (v[p]==j)pp=1;
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;
}