Pagini recente » Cod sursa (job #1060968) | Cod sursa (job #1208183) | Cod sursa (job #1630165) | Cod sursa (job #1613660) | Cod sursa (job #3306519)
#include <bits/stdc++.h>
using namespace std;
struct e1
{
int s,x,y,z;
};
e1 v1[1000555];
struct el
{
int s,x,y,z;
};
el v2[1000555];
int v[105];
int r[15];
bool ord(const el & a,const el & b)
{
if(a.s<b.s)
{
return true;
}
return false;
}
int main()
{
ifstream cin("loto.in");
ofstream cout("loto.out");
int n,s;
cin>>n>>s;
for(int i=1; i<=n; ++i)
{
cin>>v[i];
}
int i1=0,i2=0;
for(int x=1; x<=n; ++x)
{
for(int y=x; y<=n; ++y)
{
for(int z=y; z<=n; ++z)
{
++i1;
v1[i1].x=v[x];
v1[i1].y=v[y];
v1[i1].z=v[z];
v1[i1].s=v[x]+v[y]+v[z];
}
}
}
for(int x=1; x<=n; ++x)
{
for(int y=x; y<=n; ++y)
{
for(int z=y; z<=n; ++z)
{
++i2;
v2[i2].x=v[x];
v2[i2].y=v[y];
v2[i2].z=v[z];
v2[i2].s=v[x]+v[y]+v[z];
}
}
}
r[1]=-1;
sort(v2+1,v2+i2+1,ord);
for(int i=1; i<=i1; ++i)
{
int st=1,dr=i2,in=-1,mij,dif;
dif=s-v1[i].s;
while(st<=dr)
{
mij=(st+dr)/2;
if(v2[mij].s==dif)
{
in=mij;
break;
}
else if(v2[mij].s<dif)
{
st=mij+1;
}
else
{
dr=mij-1;
}
}
if(in!=-1)
{
r[1]=v1[i].x;
r[2]=v1[i].y;
r[3]=v1[i].z;
r[4]=v2[in].x;
r[5]=v2[in].y;
r[6]=v2[in].z;
break;
}
}
if(r[1]==-1)
{
cout<<-1;
}
else
{
sort(r+1,r+7);
for(int i=1;i<=6;++i)
{
cout<<r[i]<<" ";
}
}
return 0;
}