Cod sursa(job #2032663)

Utilizator papinub2Papa Valentin papinub2 Data 5 octombrie 2017 15:36:58
Problema Loto Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.52 kb
#include <fstream>
#include <algorithm>

using namespace std;

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

struct loto
{
    int a;
    int b;
    int c;
    int suma;
}bilet[1000010];

int n, s, nr, mid, ls, ld;
int v[110];

bool compara (loto x, loto y)
{
    if (x.suma > y.suma)
        return 0;

    return 1;
}

int main()
{
    in >> n >> s;

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

    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= n; j++)
        {
            for (int k = 1; k <= n; k++)
            {
                nr++;
                bilet[nr].suma = v[i] + v[j] + v[k];
                bilet[nr].a = v[i];
                bilet[nr].b = v[j];
                bilet[nr].c = v[k];
            }
        }
    }

    sort (bilet + 1, bilet + nr + 1, compara);

    for (int i = 1; i <= nr; i++)
    {
         ls = i;
         ld = nr;

         while (ls <= ld)
         {
             mid = (ls + ld) / 2;

             if (bilet[i].suma + bilet[mid].suma == s)
             {
                 out << bilet[i].a << ' ' << bilet[i].b << ' ' << bilet[i].c << ' ' << bilet[mid].a << ' ' << bilet[mid].b << ' ' << bilet[mid].c;
                 return 0;
             }

             else

             {
                 if (bilet[i].suma + bilet[mid].suma < s)
                    ls = mid + 1;

                 else

                    ld = mid - 1;
             }
         }
    }

    out << -1;

    return 0;
}