Pagini recente » Cod sursa (job #1607755) | Cod sursa (job #1125358) | Cod sursa (job #125415) | Cod sursa (job #2596858) | Cod sursa (job #1333103)
#include <stdio.h>
#define NIL -1
#define MASK 8388607 //(1<<23)-1
#define MAXN 100
int v[MAXN];
int next[MAXN*MAXN*MAXN];
int lista[MASK+1];
int main(){
int n, s, i, j, k, f, x, p;
FILE *fin, *fout;
fin=fopen("loto.in", "r");
fout=fopen("loto.out", "w");
fscanf(fin, "%d%d", &n, &s);
for(i=0; i<n; i++){
fscanf(fin, "%d", &v[i]);
}
for(i=0; i<=MASK; i++){
lista[i]=NIL;
}
for(i=0; i<n; i++){
for(j=0; j<n; j++){
for(k=0; k<n; k++){
next[n*n*i+n*j+k]=lista[(v[i]+v[j]+v[k])&MASK];
lista[(v[i]+v[j]+v[k])&MASK]=n*n*i+n*j+k;
}
}
}
f=0;
for(i=0; (i<n)&&(f==0); i++){
for(j=0; (j<n)&&(f==0); j++){
for(k=0; (k<n)&&(f==0); k++){
x=s-v[i]-v[j]-v[k];
p=lista[x&MASK];
while((p!=NIL)&&(f==0)){
if(x==v[p/(n*n)]+v[(p/n)%n]+v[p%n]){
fprintf(fout, "%d %d %d %d %d %d\n", v[i], v[j], v[k], v[p/(n*n)], v[(p/n)%n], v[p%n]);
f=1;
}
p=next[p];
}
}
}
}
if(f==0){
fprintf(fout, "-1\n");
}
fclose(fin);
fclose(fout);
return 0;
}