Pagini recente » Cod sursa (job #318462) | Cod sursa (job #1399199) | Cod sursa (job #3143620) | Cod sursa (job #160000) | Cod sursa (job #142299)
Cod sursa(job #142299)
#include<cstdio>
#include<algorithm>
using namespace std;
int n,s,v[100],m,i,j,k,st,dr,s1,mij;
pair<int,int> a[100*100*100];
inline void print(int i1,int j1)
{
int s[6],i,j,aux;
s[0]=v[a[i1].second/(100*100)];
s[1]=v[(a[i1].second/100)%100];
s[2]=v[(a[i1].second)%100];
s[3]=v[a[j1].second/(100*100)];
s[4]=v[(a[j1].second/100)%100];
s[5]=v[(a[j1].second)%100];
for(i=0;i<6;i++)
for(j=i+1;j<6;j++)
if(s[i]>s[j]){aux=s[i];s[i]=s[j];s[j]=aux;}
printf("%d %d %d %d %d %d",s[0],s[1],s[2],s[3],s[4],s[5]);
}
int main()
{freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf("%d %d",&n,&s);
for(i=1;i<=n;++i){
scanf("%d",&v[i]);
for(j=1;j<=i;++j)
for(k=1;k<=j;++k){
a[m].first=v[i]+v[j]+v[k];
a[m].second=i*100*100+j*100+k;
++m;}}
sort(&a[0],&a[m]);
for(i=0;i<m;i++){
s1=s-a[i].first;
if(s1<a[i].first) continue;
st=i;dr=m-1;
while(st<=dr){
mij=(st+dr)>>1;
if(a[mij].first==s1) break;
if(a[mij].first<s1) st=mij+1;
else dr=mij-1;}
if(a[mij].first==s1) {
print(i,mij);
fclose(stdout);
return 0;}}
printf("-1\n");
fclose(stdout);
return 0;}