Cod sursa(job #1303912)

Utilizator Corina1997Todoran Ana-Corina Corina1997 Data 28 decembrie 2014 15:14:12
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <fstream>
#include <algorithm>
using namespace std;

ifstream is("loto.in");
ofstream os("loto.out");

int n, st, dr, mij, nr;
struct jum{
    long long s;
    int a, b, c;
};



long long suma;
jum x[400000];
int v[102];

bool comp( jum i, jum j )
{
    return i.s < j.s;
}

int main()
{
    is >> n >> suma;
    for ( int i = 1; i <= n; i++ )
        is >> v[i];
    for ( int i = 1; i <= n; i++ )
        for ( int j = i; j <= n; j++ )
            for ( int k = j; k <= n; k++ )
            {
                x[++nr].s = v[i] + v[j] + v[k];
                x[nr].a = v[i];
                x[nr].b = v[j];
                x[nr].c = v[k];
            }
    st = 1;
    dr = nr;
    sort( x + 1, x + 1 + nr, comp );
    while ( st < dr )
    {
        mij = st + ( dr - st ) / 2;
        if ( x[st].s + x[dr].s > suma )
            dr--;
        else
        {
            if ( x[st].s + x[dr].s < suma )
                st++;
            else
                break;
        }
    }
    if ( x[st].s + x[dr].s != suma )
        os << -1;
    else
        os << x[st].a << ' ' << x[st].b << ' ' << x[st].c << ' ' << x[dr].a << ' ' << x[dr].b << ' ' << x[dr].c;
    is.close();
    os.close();
    return 0;
}