Pagini recente » Cod sursa (job #2848987) | Borderou de evaluare (job #1036339) | Cod sursa (job #3168412) | Cod sursa (job #1355666) | Cod sursa (job #1787563)
#include<fstream>
#include<vector>
#include<iostream>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
const int MOD = 666013;
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 A;
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 = *it;
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;
}