Pagini recente » Cod sursa (job #2973770) | Cod sursa (job #2304823) | Cod sursa (job #2405388) | Cod sursa (job #2759156) | Cod sursa (job #479397)
Cod sursa(job #479397)
#include<cstdlib>
#include<iostream>
#include<fstream>
#include<map>
#include<vector>
std::ifstream in("loto.in");
std::ofstream out("loto.out");
int N;
int* v;
int S;
struct point3d{
int i;
int j;
int k;
};
std::map<int, point3d>m;
#define form(i, j, k) {v[i], v[j], v[k]}
int main(int argc, char *argv[])
{
in >> N;
v = (int*) malloc(N * sizeof(int));
in >> S;
for(int i = 0; i < N; i++)
{
in >> v[i];
}
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;
}