Pagini recente » Cod sursa (job #1936338) | Cod sursa (job #134180) | Cod sursa (job #534622) | Cod sursa (job #87441) | Cod sursa (job #140619)
Cod sursa(job #140619)
#include <cstdio>
#include <algorithm>
using namespace std;
int a[100], nr[1<<20], n, s, N;
int main(){
freopen("loto.in", "r", stdin);
freopen("loto.out", "w", stdout);
scanf("%d %d", &n, &s);
for (int i=0; i<n; i++)
scanf("%d ", a+i);
for (int i=0; i<n; i++)
for (int j=i; j<n; j++)
for (int k=j; k<n; k++)
nr[N++] = a[i]+a[j]+a[k];
sort(nr, nr+N);
for (int i=0; i<n; i++)
for (int j=i; j<n; j++)
for (int k=j; k<n; k++){
int poz = 0;
#define W(i) if (poz+(1<<i)<N && nr[poz+(1<<i)]<=s-a[i]-a[j]-a[k]) poz += (1<<i);
W(19) W(18) W(17) W(16) W(15) W(14) W(13) W(12) W(11) W(10)
W(9) W(8) W(7) W(6) W(5) W(4) W(3) W(2) W(1) W(0);
if (nr[poz]!=s-a[i]-a[j]-a[k]) continue;
for (int p1=0; p1<n; p1++)
for (int p2=p1; p2<n; p2++)
for (int p3=p2; p3<n; p3++)
if (a[p1]+a[p2]+a[p3] == nr[poz]){
printf("%d %d %d %d %d %d", a[i], a[j], a[k], a[p1], a[p2], a[p3]);
return 0;
}
}
printf("-1");
}