Pagini recente » Cod sursa (job #2255079) | Cod sursa (job #848396) | Cod sursa (job #1145912) | Cod sursa (job #2777984) | Cod sursa (job #246790)
Cod sursa(job #246790)
#include<fstream.h>
int g,w,e[1001],c[1001], min=32000,sol=;
void energ(int en,int cost,int p)
{int i;
if(en<w)
for(i=p;i<=g && cost<min;++i)
energ(en+e[i],cost+c[i],i+1);
else
if(cost<min) min=cost;
}
void qsort(int p, int q)
{int st=p,dr=q,x=c[p],y=e[p];
while(st<dr)
{while(st<dr && x<=c[dr])dr--;
c[st]=c[dr];e[st]=e[dr];
while(st<dr && x>=c[st])st++;
c[dr]=c[st];e[dr]=e[st];
}
if(st-1>p) qsort(p,st-1);
if(st+1<q) qsort(st+1;q);
}
int main()
{ifstream f("energii.in");
ofstream h("energii.out");
int i,s=0;
f>>g>>w;
for(i=1;i<=g;++i)
{f>>e[i]>>c[i];
s+=e[i];
}
if(s<w) h<<"-1"<<'\n';
else{
qsort(1,g);
energ(0,0,1);
h<<min<<'\n'; }
f.close();
h.close();
return 0;
}