Cod sursa(job #1036955)

Utilizator borcanirobertBorcani Robert borcanirobert Data 19 noiembrie 2013 19:39:16
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.6 kb
#include <fstream>
#include <algorithm>
#include <iostream>
#include <cstring>
using namespace std;

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

int CB(int sn[101], int nr, int n);

int main()
{
    int n, s, sc, v[8];
    int i, j, t, o, p, q, nr;
    fin >> n >> s;
    int sn[101];
    for ( i = 1; i <= n; i++ )
        fin >> sn[i];
    sort(sn + 1, sn + n + 1);
    for ( i = 1; i <= n; i++ )
        for ( j = 1; j <= n; j++ )
            for ( t = 1; t <= n; t++ )
                for ( o = 1; o <= n; o++ )
                    for ( p = 1; p <= n; p++ )
                    {
                        nr = s - ( sn[i] + sn[j] + sn[t] + sn[o] + sn[p] );
                        if ( CB(sn, nr, n) == 1 )
                        {
                            v[0] = sn[i], v[1] = sn[j], v[2] = sn[t];
                            v[3] = sn[o], v[4] = sn[p], v[5] = CB(sn, nr, n);
                            sort( v, v + 6 );
                            for ( i = 0; i < 6; i++ )
                                fout << v[i] << ' ';
                            fin.close();
                            fout.close();
                            return 0;
                        }
                    }
    fout << "-1\n";
    fin.close();
    fout.close();
    return 0;
}

int CB(int sn[101], int nr, int n)
{
    int mij = n / 2, l = 1, r = n;
    while ( l <= r )
    {
        mij = ( r + l ) / 2;
        if ( nr == sn[mij] )
            return nr;
        if ( nr > sn[mij] )
            l = mij + 1;
        else
            r = mij - 1;
    }
    return 0;
}