Pagini recente » Cod sursa (job #414158) | Cod sursa (job #864928) | Cod sursa (job #99639) | Cod sursa (job #1129491) | Cod sursa (job #1803242)
#include <cstdio>
#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;
freopen( "loto.in", "r", stdin );
scanf("%d%d", &n, &s );
for( i=0; i<n; i++ )
scanf( "%d", &v[i] );
freopen( "loto.out", "w", stdout );
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 ){
printf( "%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 )
printf( "-1\n" );
return 0;
}