Pagini recente » Cod sursa (job #113186) | Cod sursa (job #2701672) | Cod sursa (job #324823) | Cod sursa (job #2660895) | Cod sursa (job #2807023)
#include <iostream>
#include <algorithm>
using namespace std;
int main(int argc, char *argv[]) {
long long int g[1000001],x[1000001],y[1000001],z[1000001],v[101],solutie[7];
long long int n,s,p=0;
cin>>n>>s;
for(long long int i=1;i<=n;i++){
cin>>v[i];
}
for(long long int i=1;i<=n;i++){
for(long long int j=1;j<=n;j++){
for(long long int k=1;k<=n;k++){
g[(i-1)*n*n+(j-1)*n+k]=v[i]+v[j]+v[k];
x[(i-1)*n*n+(j-1)*n+k]=v[i];
y[(i-1)*n*n+(j-1)*n+k]=v[j];
z[(i-1)*n*n+(j-1)*n+k]=v[k];
}
}
}
sort(g+1,g+n+1);
long long int t=1;
while(t*2<=n*n*n){
t*=2;
}
for(long long int i=1;i<=n*n*n;i++){
long long int r=0;
for(long long int h=t;h>0;h/=2){
if(g[r+h]<=s-g[i]){
r+=h;
}
}
if(v[i]+v[r]==s){
p=1;
solutie[1]=x[i];
solutie[2]=y[i];
solutie[3]=z[i];
solutie[4]=x[r];
solutie[5]=y[r];
solutie[6]=z[r];
break;
}
}
sort(solutie+1,solutie+7);
if(p==0){
cout<<-1;
}else{
for(int i=1;i<=6;i++){
cout<<solutie[i]<<" ";
}
}
}