Pagini recente » Cod sursa (job #2096173) | Cod sursa (job #3242966) | Cod sursa (job #488610) | Cod sursa (job #2490994) | Cod sursa (job #479390)
Cod sursa(job #479390)
#include<cstdlib>
#include<iostream>
#include<fstream>
#include<map>
#include<vector>
std::ifstream in("loto.in");
std::ofstream out("loto.out");
int N;
std::vector<int>v;
int S;
struct point3d{
int i;
int j;
int k;
};
std::map<int, point3d>m;
inline point3d form(int i, int j, int k)
{
point3d result;
result.i = v[i];
result.j = v[j];
result.k = v[k];
return result;
}
int main(int argc, char *argv[])
{
in >> N;
in >> S;
for(int i = 0; i < N; i++)
{
int cur;
in >> cur;
v.push_back(cur);
}
for(int i = 0; i < N; i++)
for(int j = 0; j < N; j++)
for(int k = 0; k < N; k++)
m[v[i] + v[j] + v[k]] = form(i, j , k);
for(std::map<int, point3d>::iterator it = m.begin(); it != m.end(); it++)
{
std::pair<int, point3d> p = *it;
std::map<int, point3d>::iterator f = m.find(S - p.first);
if(f != m.end())
{
point3d second_point = (*f).second;
out << p.second.i << " " << p.second.j << " " << p.second.k << " "
<< second_point.i << " " << second_point.j << " " << second_point.k;
return 0;
}
}
out << "-1";
in.close();
out.close();
return 0;
}