Cod sursa(job #1711510)

Utilizator valentinoMoldovan Rares valentino Data 31 mai 2016 15:40:39
Problema Loto Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <algorithm>
#include <fstream>
#include <iostream>
#define N 1030301
using namespace std;

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

int n1, n, s, a[101];
long int v[N];

void show(long int sum)
{
    for(int i = 1; i <= n; ++i)
        for(int j = i; j <= n; ++j)
            for(int k = j; k <= n; ++k)
            {
                if(a[i] + a[j] + a[k] == sum)
                    g << a[i] << ' ' << a[j] << ' ' << a[k] << ' ';
            }
}

int main()
{
    f >> n >> s;
    for(int i = 1; i <= n; ++i)
        f >> a[ i ];
    for(int i = 1; i <= n; ++i)
        for(int j = i; j <= n; ++j)
            for(int k = j; k <= n; ++k)
                v[ ++n1 ] = a[ i ] + a [ j ] + a[ k ];
    sort(v + 1, v + n1 + 1);
    bool gasit = false;
    for(int i = 1; i <= n1; ++i)
    {
        int st = i;
        int dr = n1;
        int m;
        while(st <= dr)
        {
            m = (st + dr) >> 1;
            if(v[m] == s - v[i])
            {
                gasit = true;
                show(v[i]);
                show(v[m]);
                break;
            }
            else if(v[m] < s - v[i])
                st = m + 1;
            else dr = m - 1;
        }
        if(gasit)
            return 0;
    }
    g << "-1" << '\n';




}