Cod sursa(job #2391955)

Utilizator FrostfireMagirescu Tudor Frostfire Data 29 martie 2019 14:02:06
Problema Loto Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <fstream>
#include <iostream>
#include <algorithm>

using namespace std;

ifstream f("loto.in");
ofstream g("loto.out");

int n, S, v[105], t;
struct loto
{
    int s, x1, x2, x3;
}a[1000100];

int mycmp(loto a, loto b)
{
    return a.s < b.s;
}

int main()
{
    f >> n >> S;
    for(int i=1; i<=n; i++) f >> v[i];
    for(int i=1; i<=n; i++)
        for(int j=1; j<=n; j++)
            for(int k=1; k<=n; k++)
            {   a[++t].s = v[i] + v[j] + v[k];
                a[t].x1 = i;
                a[t].x2 = j;
                a[t].x3 = k;
            }
    sort(a+1, a+t+1, mycmp);

    int i = 1;
    while(S - a[i].s > a[t].s) i++;
    for(; i<t; i++)
    {
        int st = i+1;
        int dr = t;
        while(st < dr)
        {
            int mij = (st + dr) / 2;
            if(a[mij].s == S-a[i].s)
            {
                g << v[a[i].x1] << ' ' << v[a[i].x2] << ' ' << v[a[i].x3] << ' ' << v[a[mij].x1]
                  << ' ' << v[a[mij].x2] << ' ' << v[a[mij].x3] << '\n';
                return 0;
            }
            else if(v[mij] > S-a[i].s) dr = mij - 1;
            else st = mij + 1;
        }
    }
    g << -1 << '\n';
    return 0;
}