Pagini recente » Cod sursa (job #2718851) | Cod sursa (job #2647074) | Cod sursa (job #584494) | Cod sursa (job #395739) | Cod sursa (job #2533518)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("loto.in");
ofstream fout ("loto.out");
int v[1000000],numere[300];
int main()
{
int s,n,i,j,k,nr,i2,dif,step,pos,s1,s2;
int ok=0 ,b=0, c=0;
fin >> n;
fin >> s;
for(i=0;i<3*n;i++)
{
fin >> nr;
numere[i]=nr;
i++;
numere[i]=nr;
i++;
numere[i]=nr;
}
sort(numere,numere+3*n-1);
i2=0;
for(i=0;i<3*n-2;i++)
{
for(j=i+1;j<3*n-1;j++)
{
for(k=j+1;k<3*n;k++)
{
v[i2]=numere[i]+numere[j]+numere[k];
i2++;
}
}
}
i=0;
ok=0;
while(i<i2 && ok==0)
{
dif=s-v[i];
pos=-1;
step=524288;
while(step>0)
{
if((pos+step)<n && v[pos+step]<=dif)
pos+=step;
step=step>>1;
}
if(v[pos]==dif)
{
ok=1;
s1=v[i];
s2=v[pos];
}
i++;
}
ok=0;
i=0;
while(i<3*n-2)
{
j=0;
while(j<3*n-1)
{
k=0;
while( k<3*n)
{
if((numere[i]+numere[j]+numere[k])==s1 && b!=1)
{
ok++;
fout << numere[i] << " " << numere[j] << " " << numere[k] << " ";
b=1;
}
if((numere[i]+numere[j]+numere[k])==s2 && c!=1)
{
ok++;
fout << numere[i] << " " << numere[j] << " " << numere[k] << " ";
c=1;
}
if(ok==2)
return 0;
k++;
}
j++;
}
i++;
}
fout << -1;
return 0;
}