Cod sursa(job #1770730)

Utilizator EuEricCiordel Rromeo EuEric Data 4 octombrie 2016 19:29:32
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.43 kb

#include <algorithm>
#include <fstream>
using namespace std;
struct grup
{
    int x, y, z;
    int suma;
};
ifstream cin("loto.in");
ofstream cout("loto.out");
const int NMAX = 105;
int v[NMAX];
int contor;
grup a[NMAX * NMAX * NMAX];
bool cmp(grup a, grup b)
{
    return a.suma < b.suma;
}

int exista(int x)
{
    int st = 1, dr = contor;
    while(st <= dr)
    {
        int mij = (st + dr) / 2;
        if(a[mij].suma == x)
            return mij;
        if(a[mij].suma < x)
            st = mij + 1;
        else
            dr = mij - 1;
    }
    return -1;
}
int main()
{
    int n, s;
    cin  >> n >> s;
    for(int i = 1; i <= n; i ++)
        cin >> v[i];
    contor = 0;
    for(int i = 1; i <= n; i ++)
    {
        for(int j = i; j <= n; j ++)
        {
            for(int k = j; k <= n; k ++)
            {
                contor ++;
                a[contor].x = i;
                a[contor].y = j;
                a[contor].z = k;
                a[contor].suma = v[i] + v[j] + v[k];
            }
        }
    }
    sort(a + 1, a + contor + 1, cmp);
    for(int i = 1; i <= contor; i ++)
    {
        int j = exista(s - a[i].suma);
        if(j != -1)
        {
            cout << v[a[i].x] << " " << v[a[i].y] << " " << v[a[i].z] << " "<< v[a[j].x] << " " << v[a[j].y] << " " << v[a[j].z];
            return 0;
        }
    }
    cout << "-1";
    return 0;
}