Pagini recente » Cod sursa (job #2926648) | Cod sursa (job #2645873) | Cod sursa (job #2102650) | Cod sursa (job #759736) | Cod sursa (job #1826035)
# include <stdio.h>
# include <stdlib.h>
# include <vector>
# include <iostream>
# define MAX_N 101
# define infinit 100000001
# define MOD ( 1 << 13 )
using namespace std;
int v[MAX_N];
struct pereche
{
int a, b, c;
int s;
} notfound, p, aux;
vector<struct pereche> h[MOD + 1];
void push( pereche a )
{
h[a.s % MOD].push_back( a );
}
pereche &find( int s )
{
int i = 0;
int t = s % MOD;
while ( i < h[t].size() && h[t][i].s != s )
i ++;
if ( i < h[t].size() )
return h[t][i];
else
return notfound;
}
int main()
{
notfound.s = -1;
FILE *fin = fopen( "loto.in", "r" ), *fout = fopen( "loto.out", "w" );
int n, i, j, k, S;
fscanf( fin, "%d%d", &n, &S );
for ( i = 1; i <= n; i ++ )
fscanf( fin, "%d", &v[i] );
i = j = k = 1;
while ( i <= n && ( v[i] + v[j] + v[k] >= S || find( S - v[i] - v[j] - v[k] ).s == -1 ) )
{
aux.a = v[i];
aux.b = v[j];
aux.c = v[k];
aux.s = v[i] + v[j] + v[k];
push( aux );
k ++;
if ( k > n )
{
k = 1;
j ++;
if ( j > n )
{
j = 1;
i ++;
}
}
}
if ( i <= n )
{
p = find( S - v[i] - v[j] - v[k] );
fprintf( fout, "%d %d %d %d %d %d", p.a, p.b, p.c, v[i], v[j], v[k] );
}
else
fprintf( fout, "-1" );
fclose( fin );
fclose( fout );
return 0;
}