Pagini recente » Cod sursa (job #1959187) | Cod sursa (job #2252696) | Cod sursa (job #550700) | Cod sursa (job #2409453) | Cod sursa (job #1787559)
#include<fstream>
#include<vector>
#include<iostream>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
const int MOD = 606227;
const int NMAX = 105;
typedef struct num{
int x,y,z;
int sum;
}numar;
vector<numar> H[606227];
int v[NMAX];
void add(numar *elem)
{
int key = elem->sum % MOD;
H[key].push_back(*elem);
}
numar *este(int elem)
{
numar B;
B.sum = -1;
B.x = B.y = B.z = 0;
numar *A = &B;
A->sum = -1;
int key = elem % MOD;
for(vector<numar>::iterator it = H[key].begin() ; it != H[key].end() ; ++it)
if((*it).sum == elem){
A->sum = elem;
A->x = (*it).x;
A->y = (*it).y;
A->z = (*it).z;
return A;
}
return A;
}
int main()
{
int N,S;
in>>N>>S;
for(int i = 1 ; i <= N ; ++i)
in>>v[i];
numar nr;
for(int i = 1 ; i <= N ; ++i)
for(int j = 1 ; j <= N ; ++j)
for(int k = 1 ; k <= N ; ++k){
nr.sum = v[i] + v[j] + v[k];
nr.x = v[i];
nr.y = v[j];
nr.z = v[k];
add(&nr);
}
numar* n;
for(int i = 1 ; i <= N ; ++i)
for(int j = 1 ; j <= N ; ++j)
for(int k = 1 ; k <= N ; ++k){
n = este( S - (v[i] + v[j] + v[k]));
if(n->sum != - 1){
out<<v[i]<<" "<<v[j]<<" "<<v[k]<<" "<<n->x<<" "<<n->y<<" "<<n->z;
return 0;
}
}
out<<-1;
return 0;
}