Pagini recente » Cod sursa (job #1251582) | Cod sursa (job #74855) | Cod sursa (job #2878070) | Cod sursa (job #1740782) | Cod sursa (job #1451988)
#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;
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) ab=v[i],i=N*N*N+1;
if(!ab) g<<-1;
else
{
for(i=1;i<=N;++i)
for(j=1;j<=N;++j)
for(z=1;z<=N;++z) if(ab==a[i]+a[z]+a[j]) {g<<a[i]<<" "<<a[j]<<" "<<a[z]<<" "; i=j=z=N+1;}
for(i=1;i<=N;++i)
for(j=1;j<=N;++j)
for(z=1;z<=N;++z) if(S-ab==a[i]+a[z]+a[j]) {g<<a[i]<<" "<<a[j]<<" "<<a[z]<<" "; i=j=z=N+1;}
}
g.close();
return 0;
}