Pagini recente » Cod sursa (job #2471380) | Cod sursa (job #2435943) | Cod sursa (job #1829448) | Cod sursa (job #2892452) | Cod sursa (job #1180536)
#include<cstdio>
#include<algorithm>
using namespace std;
class Loto{
public:
int sum,x1,x2,x3;
bool operator <(const Loto&l)const{
return this->sum<l.sum;
}
};
const int N=100;
Loto v[N*N*N+1];
int sc[N+1];
int n,s,leg;
void scan(){
int i;
scanf("%d%d",&n,&s);
for(i=1;i<=n;i++)
scanf("%d",&sc[i]);
}
void setV(){
int i,j,k;
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
for(k=j;k<=n;k++){
v[++leg].sum=sc[i]+sc[j]+sc[k];
v[leg].x1=sc[i];
v[leg].x2=sc[j];
v[leg].x3=sc[k];
}
sort(v+1,v+leg+1);
}
int bSearch(int sum){
int l=1,r=leg,m;
while(l<r-1){
m=(l+r)/2;
if(v[m].sum==sum)
return m;
if(v[m].sum<sum)
l=m;
else
r=m;
}
if(v[l].sum==sum)
return l;
if(v[r].sum==sum)
return r;
return 0;
}
void solve(){
int i,sum,p;
bool f=false;
for(i=1;i<=leg;i++){
sum=v[i].sum;
p=bSearch(s-sum);
if(p!=0){
f=true;
printf("%d %d %d %d %d %d",v[i].x1,v[i].x2,v[i].x3,v[p].x1,v[p].x2,v[p].x3);
return;
}
}
if(!f)
printf("-1");
}
void init(){
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scan();
setV();
}
int main(){
init();
solve();
return 0;
}