Pagini recente » Cod sursa (job #215418) | Cod sursa (job #2489989) | Cod sursa (job #653645) | Cod sursa (job #1829918) | Cod sursa (job #1495969)
#include<algorithm>
#include<cstdio>
#define K 1000000
#define N 100
using namespace std;
struct mazi{
int S,n1,n2,n3;
};
int v[N+1];
mazi C[K+1];
int k;
void preC(int n){
int i,j,l;
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
for(l=j;l<=n;l++){
k++;
C[k].S=v[i]+v[j]+v[l];
C[k].n1=v[i];
C[k].n2=v[j];
C[k].n3=v[l];
}
}
bool meow(mazi a,mazi b){
if (a.S<b.S) return true;
return false;
}
void print(int i){
printf ("%d %d %d ",C[i].n1,C[i].n2,C[i].n3);
}
int main(){
freopen ("loto.in","r",stdin);
freopen ("loto.out","w",stdout);
int n,i,s,j;
int R1,R2;
scanf ("%d%d",&n,&s);
for(i=1;i<=n;i++)
scanf ("%d",&v[i]);
preC(n);
sort(C+1,C+k+1,meow);
i=1;
j=k;
R1=R2=-1;
while(C[i].S<=s &&i<=j){
while(C[i].S+C[j].S>s &&j>i) j--;
if (C[i].S+C[j].S==s){
R1=i;
R2=j;
i=j=1;
}
i++;
}
if (R1==-1) printf ("-1");
else {
print(R1);
print(R2);
}
return 0;
}