Pagini recente » Cod sursa (job #471194) | Cod sursa (job #1551675) | Cod sursa (job #455934) | Cod sursa (job #804252) | Cod sursa (job #2386719)
#include <bits/stdc++.h>
using namespace std;
int n,i,s,nr,v[110],p,u,ok;
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",a[x].x1,a[x].x2,a[x].x3,a[y].x1,a[y].x2,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){
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){
afis(i,ok);
break;
}
}
if (!ok) printf("-1");
return 0;
}