Cod sursa(job #479403)

Utilizator marius.bucurBucur Marius - Ovidiu marius.bucur Data 23 august 2010 21:14:32
Problema Loto Scor 70
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;
int* v;
int S;
struct point3d{
    int i;
    int j;
    int k;
};
std::map<int, point3d*>m;
point3d* form(int i, int j, int k)
{
    point3d*p = new point3d;
    p->i = v[i];
    p->j = v[j];
    p->k = v[k];
    return p;
}

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::map<int, point3d*>::iterator f = m.find(S - it->first);
        if(f != m.end())
        {
            point3d* second_point = f->second;
            out << it->second->i << " " << it->second->j << " " << it->second->k << " "
                << second_point->i << " " << second_point->j << " " << second_point->k;
            return 0;
        }
    }
    out << "-1";
    in.close();
    out.close();
    return 0;
}