Pagini recente » Cod sursa (job #2644578) | Cod sursa (job #2938813) | Cod sursa (job #3175867) | Cod sursa (job #2461606) | Cod sursa (job #140634)
Cod sursa(job #140634)
#include <cstdio>
#include <algorithm>
#define MOD 253141
using namespace std;
struct {
unsigned nr, next;
} h[MOD + (1<<18)];
unsigned a[100], n, s, N, aloc = MOD;
void baga(unsigned x){
unsigned key = x%MOD;
while (h[key].next)
key = h[key].next;
h[key].nr = x;
h[key].next = aloc++;
}
void exista(unsigned x){
unsigned key = x%MOD;
while (h[key].next){
if (h[key].nr == x) return 1;
key = h[key].next;
}
return 0;
}
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++){
baga(a[i]+a[j]+a[k]);
}
for (int i=0; i<n; i++)
for (int j=i; j<n; j++)
for (int k=j; k<n; k++){
int poz = 0;
if (!exista(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");
}