Pagini recente » Cod sursa (job #2568736) | Cod sursa (job #2987111) | Cod sursa (job #1053717) | Cod sursa (job #1468659) | Cod sursa (job #368491)
Cod sursa(job #368491)
#include <stdio.h>
#define MAXN 101
#define DIV 666131
FILE *f = fopen("loto.in","r");
FILE *g = fopen("loto.out","w");
int n,s,v[MAXN], nr1, nr2, nr3;
struct nod{
int x,y,z;
nod *urm;
} *L[DIV];
void citire(){
fscanf(f, "%d %d", &n, &s);
for (int i = 1; i <= n; i++)
fscanf(f,"%d", &v[i]);
fclose(f);
}
void add(int i, int j, int k){
int ind = ( v[i] + v[j] + v[k] ) % DIV;
nod *p = new nod;
p->x = i;
p->y = j;
p->z = k;
p->urm = L[ind];
L[ind] = p;
}
int check (int x){
for (nod *p = L[x % DIV]; p != NULL; p = p->urm)
if (v[p -> x] + v[p -> y] + v[p -> z] == x){
nr1 = v[p->x];
nr2 = v[p->y];
nr3 = v[p->z];
return 1;
};
return 0;
};
int main (){
citire();
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
for (int k = 1; k <= n; k++)
add(i, j, k);
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
for (int k = 1; k <= n; k++)
if (check(s - (v[i] + v[j] + v[k]))){
fprintf(g,"%d %d %d %d %d %d", i, j, k, nr1, nr2, nr3);
return 0;
};
fprintf(g,"-1");
fclose(g);
return 0;
}