Pagini recente » Cod sursa (job #984376) | Cod sursa (job #2891168) | Cod sursa (job #716947) | Cod sursa (job #1690800) | Cod sursa (job #2605351)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("loto.in");
ofstream fout ("loto.out");
int v[100],sum[171701],num[6];
int main()
{
int n,i,j,k,p,S,suma1=0,suma2=0;
fin >> n >> S;
p=0;
for(i=0;i<n;i++)
fin >> v[i];
for(i=0;i<n;i++)
for(j=i;j<n;j++)
for(k=j;k<n;k++)
sum[p++]=v[i]+v[j]+v[k];
sort(sum,sum+p);
int step,pos,e;
bool ok=0,ok1,ok2;
for(i=0;i<p && ok==0;i++)
{
step=1<<18;
pos=-1;
e=S-sum[i];
while(step>0)
{
if(pos+step<p)
if(sum[pos+step]<e)
pos+=step;
step=(step>>1);
}
if(sum[pos+1]==e)
{
suma1=sum[pos+1];
suma2=sum[i];
ok=1;
}
}
ok1=0;
ok2=0;
int j2=0;
for(i=0;i<n;i++)
for(j=i;j<n;j++)
for(k=j;k<n;k++)
{
if(ok1==0)
if(v[i]+v[j]+v[k]==suma1)
{
ok1=1;
num[j2++]=v[i];
num[j2++]=v[j];
num[j2++]=v[k];
}
if(ok2==0)
if(v[i]+v[j]+v[k]==suma2)
{
ok2=1;
num[j2++]=v[i];
num[j2++]=v[j];
num[j2++]=v[k];
}
}
if(ok1==0 || ok2==0)
fout << -1;
else
for(i=0;i<6;i++)
fout << num[i] << " ";
return 0;
}