Pagini recente » Cod sursa (job #314505) | Cod sursa (job #2134903) | Cod sursa (job #1420310) | Cod sursa (job #323987) | Cod sursa (job #575763)
Cod sursa(job #575763)
#include<fstream.h>
#include<algorithm>
ifstream f("loto.in");
ofstream g("loto.out");
struct form{int a,b,c;} v1[1000005];
int n,q,v[1000005],s[105],ii,jj,ok,st,dr,mij,tz,nr,w;
int cauta(int a, int &jj)
{
st=1; dr=nr;
while(st<=dr)
{ mij=(st+dr)/2;
if(v[mij]==a) {jj=mij;return 1;}
if(v[mij]<a) st=mij+1;
else dr=mij-1;
}
return 0;
}
int main()
{
int i,j,k;
f>>n>>q;
for(i=1;i<=n;++i) f>>s[i];
std::sort(s+1,s+n+1);
for(i=1;i<=n;++i)
for(j=i;j<=n;++j)
for(k=j;k<=n;++k)
{ v[++nr]=s[i]+s[j]+s[k];
v1[nr].a=s[i];
v1[nr].b=s[j];
v1[nr].c=s[k];
}
w=1;
while(v[w]+v[nr]<q) ++w;
tz=nr;
while(2*v[tz]>q) --tz;
++tz;
for(i=w;i<tz&&!ok;++i)
if(cauta(q-v[i],jj)) ok=1,ii=i;
if(ok)
{ sol[0]=v1[ii].a;
sol[1]=v1[ii].b;
sol[2]=v1[ii].c;
sol[3]=v1[jj].a;
sol[4]=v1[jj].b;
sol[5]=v1[jj].c;
sort(sol,sol+5);
for(i=0;i<6;++i) g<<sol[i]<<' ';
g<<'\n';
}
else g<<-1<<'\n';
f.close(); g.close();
return 0;
}