Cod sursa(job #479394)

Utilizator marius.bucurBucur Marius - Ovidiu marius.bucur Data 23 august 2010 21:03:08
Problema Loto Scor 75
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#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;
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;
    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;
}