Pagini recente » Cod sursa (job #2542650) | Cod sursa (job #1981194) | Cod sursa (job #1906093) | Cod sursa (job #2409379) | Cod sursa (job #1451987)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
int N,S,i,j,z,a[101],v[1000012],ab,x,ok;
int cautbin(int caut, int st,int dr)
{
int mij;
while(st<=dr)
{
mij=(st+dr)/2;
if(v[mij]==caut) return mij;
if(caut<v[mij]) dr=mij-1;
else st=mij+1;
}
return -1;
}
int main()
{
f>>N>>S;
for(i=1;i<=N;++i) f>>a[i];
for(i=1;i<=N;++i)
for(j=1;j<=N;++j)
for(z=1;z<=N;++z) v[++x]=a[i]+a[z]+a[j];
sort(v+1,v+x+1);
for(i=1;i<=N*N*N;++i) if(cautbin(S-v[i],1,N*N*N)!=-1&&ok==0) ab=v[i],ok=1;
if(!ok) g<<-1;
else
{
for(i=1;i<=N;++i)
for(j=1;j<=N;++j)
for(z=1;z<=N;++z) if(ab==v[i]+v[z]+v[j]) g<<v[i]<<" "<<v[j]<<" "<<v[z]<<" ";
for(i=1;i<=N;++i)
for(j=1;j<=N;++j)
for(z=1;z<=N;++z) if(S-ab==v[i]+v[z]+v[j]) g<<v[i]<<" "<<v[j]<<" "<<v[z]<<" ";
}
g.close();
return 0;
}