Cod sursa(job #479384)

Utilizator marius.bucurBucur Marius - Ovidiu marius.bucur Data 23 august 2010 20:50:30
Problema Loto Scor 75
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#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;
        if(m.find(S - p.first) != m.end())
        {
            point3d second_point = m[S - p.first];
            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;
}