Cod sursa(job #2177829)

Utilizator AndreiSorin26012001Cirpici Andrei Sorin AndreiSorin26012001 Data 18 martie 2018 20:54:46
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <bits/stdc++.h>

using namespace std;

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

struct str
{
    int suma;
    int nr1, nr2, nr3;

    void make_item( int a, int b, int c, int d )
    {
        suma = a;
        nr1 = b;
        nr2 = c;
        nr3 = d;
    }

}v[1000005];

int n, S, nr[105];
int p, poz;

int cautBinar( int st, int dr, int val )
{
    int mid;

    while( st <= dr )
    {
        mid = (st + dr)/2;

        if( v[mid].suma < val )
            st = mid + 1;
        else
            dr = mid - 1;
    }

    return st;
}

int main(){

   in>>n>>S;
   for( int i = 1; i <= n; i++ )
        in>>nr[i];

   for( int i = 1; i <= n; i++ )
        for( int j = 1; j <= n; j++ )
            for( int k = 1; k <= n; k++ )
            {
                p++;
                v[p].make_item( nr[i] + nr[j] + nr[k], nr[i], nr[j], nr[k] );
            }

   for( int i = 1; i <= p; i++ )
    {
        poz = cautBinar( 1, p, S - v[i].suma );

        if( v[i].suma + v[poz].suma == S )
        {
            out<<v[i].nr1<<" "<<v[i].nr2<<" "<<v[i].nr3<<" ";
            out<<v[poz].nr1<<" "<<v[poz].nr2<<" "<<v[poz].nr3;
            return 0;
        }
    }


    out<<-1;

   return 0;
}