Pagini recente » Cod sursa (job #258851) | Cod sursa (job #1481593) | Cod sursa (job #1894475) | Cod sursa (job #1782424) | Cod sursa (job #2661794)
#include <stdio.h>
#include <vector>
#define NMAX 100
#define MOD 666013
using namespace std;
int v[NMAX];
struct per {
int a, b, c, suma;
};
vector<per> myHash[MOD];
int cauta( int x ) {
int n, cod, i;
cod = x % MOD;
n = myHash[cod].size();
i = 0;
while ( i < n && myHash[cod][i].suma != x )
i++;
if ( i == n )
i = -1;
return i;
}
void adauga( int x, int y, int z, int s ) {
int n, cod, i;
cod = s % MOD;
n = myHash[cod].size();
i = 0;
while ( i < n && myHash[cod][i].suma != s )
i++;
if ( i == n )
myHash[cod].push_back( {x, y, z, s} );
}
int main() {
FILE *fin, *fout;
int n, s, sum, p, i, j, k;
fin = fopen( "loto.in", "r" );
fscanf( fin, "%d%d", &n, &s );
for ( i = 0; i < n; i++ )
fscanf( fin, "%d", &v[i] );
fclose( fin );
p = -1;
i = 0;
while ( i < n && p == -1 ) {
j = 0;
while ( j < n && p == -1 ) {
k = 0;
while ( k < n && p == -1 ) {
sum = v[i] + v[j] + v[k];
adauga( v[i], v[j], v[k], sum );
p = cauta( s - sum );
k++;
}
j++;
}
i++;
}
fout = fopen( "loto.out", "w" );
if ( p == -1 )
fprintf( fout, "-1" );
else
fprintf( fout, "%d %d %d %d %d %d", v[i - 1], v[j - 1], v[k - 1], myHash[(s - sum) % MOD][p].a, myHash[(s - sum) % MOD][p].b, myHash[(s - sum) % MOD][p].c );
fclose( fout );
return 0;
}