Pagini recente » Cod sursa (job #1686320) | Cod sursa (job #369742) | Cod sursa (job #1532104) | Cod sursa (job #1039137) | Cod sursa (job #1765274)
#include <stdio.h>
#define nmax 100
#define mod 702113
#define pozmax 338351
int v[nmax];
typedef struct{
int val, next, comp;
}nod;
nod loto[pozmax];
int hash[mod];
int poz, n;
int cauta( int nr ){
int pozlist = hash[ nr % mod ];
while( pozlist!=0 && loto[pozlist].val!=nr )
pozlist = loto[pozlist].next;
return pozlist;
}
void insert( int nr, int i, int j, int k ){
loto[++poz].val = nr;
loto[poz].comp = n*n*i + n*j + k;
loto[poz].next = hash[nr%mod];
hash[nr%mod] = poz;
}
int main()
{
int i, j, k, s, ok, sum;
FILE *fin, *fout;
fin = fopen( "loto.in", "r" );
fscanf( fin, "%d%d", &n, &s );
for( i=0; i<n; i++ )
fscanf( fin, "%d", &v[i] );
fclose( fin );
fout = fopen( "loto.out", "w" );
ok = 0;
for( i=0; i<n && ok==0; i++ ){
for( j=i; j<n && ok==0; j++ ){
for( k=i; k<n && ok==0; k++ ){
sum = v[i] + v[j] + v[k];
insert( sum, i, j, k );
if( s>sum )
ok = cauta( s - sum );
if( ok!=0 ){
fprintf( fout, "%d %d %d %d %d %d\n", v[ (loto[ok].comp) / (n*n) ], v[ (loto[ok].comp/n)%n ], v[ loto[ok].comp%n ], v[i], v[j], v[k] );
}
}
}
}
if( ok==0 )
fprintf( fout, "-1\n" );
fclose( fout );
return 0;
}