Pagini recente » Cod sursa (job #1838571) | Cod sursa (job #1927098) | Profil MrPetcu | Cod sursa (job #2038068) | Cod sursa (job #2386721)
#include <bits/stdc++.h>
using namespace std;
int n,i,s,nr,v[110],p,u,ok=-1;
struct suma{
int s,x1,x2,x3;
suma(int ss,int xx1, int xx2, int xx3){
s=ss;
x1=xx1;
x2=xx2;
x3=xx3;
}
};
int cmp(suma a, suma b){
return a.s<=b.s;
}
vector<suma>a;
void afis(int x, int y){
printf("%d %d %d %d %d %d",v[a[x].x1],v[a[x].x2],v[a[x].x3],v[a[y].x1],v[a[y].x2],v[a[y].x3]);
}
int main()
{
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf("%d%d",&n,&s);
for (int i=1;i<=n;i++)
scanf("%d",&v[i]);
for (int i=1;i<=n;i++)
for (int j=i;j<=n;j++)
for (int k=j;k<=n;k++)
a.push_back(suma(v[i]+v[j]+v[k],i,j,k));
nr=a.size();
sort(a.begin(),a.end(),cmp);
for (i=0;i<nr;i++){
p=0;u=nr-1;
while (p<=u&&ok==-1){
int mij=(p+u)/2;
if (a[mij].s<s-a[i].s) {p=mij+1;continue;}
if (a[mij].s>s-a[i].s) {u=mij-1;continue;}
if (a[mij].s==s-a[i].s) ok=mij;
}
if (ok!=-1){
afis(i,ok);
break;
}
}
if (ok==-1) printf("-1");
return 0;
}