Pagini recente » Cod sursa (job #2965299) | Cod sursa (job #2532759) | Cod sursa (job #1705295) | Cod sursa (job #3137837) | Cod sursa (job #1362966)
#include <fstream>
#include <algorithm>
#define NMAX 1000010
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
struct punct
{
int x,y,z;
};
punct sume2[NMAX];
long long n,s,i,j,k,sume[NMAX],v[110],cnt=0,dif;
int cnt2=0,v2[10],ok=0;
int main()
{
in>>n>>s;
for(i=1; i<=n; ++i) in>>v[i];
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
for(k=1; k<=n; k++)
{
cnt++;
sume[cnt]=v[i]+v[j]+v[k];
sume2[cnt].x=v[i];
sume2[cnt].y=v[j];
sume2[cnt].z=v[k];
}
sort(sume+1,sume+cnt+1);
for(i=1; i<=cnt; i++)
{
dif=s-sume[i];
v2[1]=sume2[i].x;
v2[2]=sume2[i].y;
v2[3]=sume2[i].z;
long long st=1,dr=cnt,mij,sol=-1;
while(st<=dr)
{
mij=(st+dr)/2;
if(dif<sume[mij]) dr=mij-1;
else if(dif>sume[mij]) st=mij+1;
else
{
sol=mij;
break;
}
}
if(sol!=-1)
{
v2[4]=sume2[sol].x;
v2[5]=sume2[sol].y;
v2[6]=sume2[sol].z;
sort(v2+1,v2+7);
for(j=1; j<=6; j++) out<<v2[j]<<" ";
ok=1;
break;
}
}
if(ok==0) out<<-1;
in.close();
out.close();
return 0;
}