Cod sursa(job #1770722)

Utilizator EuEricCiordel Rromeo EuEric Data 4 octombrie 2016 19:18:56
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.48 kb
#include <algorithm>
#include <iostream>
#include <fstream>
using namespace std;
struct grup
{
    int i1, i2, i3;
    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].i1 = i1;
                a[contor].i2 = i2;
                a[contor].i3 = i3;
                a[contor].suma = v[i1] + v[i2] + v[i3];
            }
        }
    }
    sort(a + 1, a + contor + 1, cmp);
    for(int i = 1; i <= contor; i ++)
    {
        int j = caut(s - a[i].suma);
        if(j != -1)
        {
            out << v[a[i].i1] << " " << v[a[i].i2] << " " << v[a[i].i3] << " ";
            out << v[a[j].i1] << " " << v[a[j].i2] << " " << v[a[j].i3] << '\n';
            return 0;
        }
    }
    cout << "-1";
    return 0;
}