Pagini recente » Cod sursa (job #1971435) | Cod sursa (job #291772) | Cod sursa (job #370896) | Cod sursa (job #1413214) | Cod sursa (job #2386722)
#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;
}
suma a[1000010];
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));
a[nr].s=v[i]+v[j]+v[k];
a[nr].x1=i;
a[nr].x2=j;
a[nr].x3=k;
nr++;
}
sort(a,a+nr,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;
}