Cod sursa(job #1770723)

Utilizator EuEricCiordel Rromeo EuEric Data 4 octombrie 2016 19:22:12
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.45 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 caut(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[j];
            }
        }
    }
    sort(a + 1, a + contor + 1, cmp);
    for(int i = 1; i <= contor; i ++)
    {
        int j = caut(s - a[i].suma);
        if(j != -1)
        {
            cout << v[a[i].x] << " " << v[a[i].y] << " " << v[a[i].z] << " ";
            cout << v[a[j].x] << " " << v[a[j].y] << " " << v[a[j].z] << '\n';
            return 0;
        }
    }
    cout << "-1";
    return 0;
}