Cod sursa(job #2438924)

Utilizator PatrickCplusplusPatrick Kristian Ondreovici PatrickCplusplus Data 14 iulie 2019 13:07:44
Problema Loto Scor 25
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.62 kb
#include <bits/stdc++.h>

using namespace std;

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

int n, z;
long long s, v[105];
struct info
{
    long long a,b,c,sum;
}sum[1000007];

bool cmp(info a, info b)
{
    return a.sum < b.sum;
}
int main()
{
    fin >> n >> s;
    for (int i = 1; i <= n; ++i)
    {
        fin >> v[i];
    }
    for (int i = 1; i <= n; ++i)
    {
        for (int j = 1; j <= n; ++j)
        {
            for (int k = 1; k <= n; ++k)
            {
                sum[++z] = {v[i], v[j], v[k], v[i] + v[j] + v[k]};
            }
        }
    }
    sort(sum + 1, sum + z + 1, cmp);
    for (int i = 1; i <= z; ++i)
    {
        int st = 1, dr = z, sol = -1;
        long long s2 = s - sum[i].sum;
        if (s2 > 0)
        {
            while (st <= dr)
            {
                int mid = (st + dr) / 2;
                if (s2 - sum[mid].sum >= 0)
                {
                    sol = mid;
                    st = mid + 1;
                }
                else
                {
                    dr = mid - 1;
                }
            }
            if (sol)
            {
                if (s2 - sum[sol].sum == 0)
                {
                    int ve[] = {sum[i].a, sum[i].b, sum[i].c, sum[sol].a, sum[sol].b, sum[sol].c};
                    sort(ve, ve + 6);
                    for (int idk = 0; idk < 6; ++idk)
                    {
                        fout << ve[idk] << " ";
                    }
                    return 0;
                }
            }
        }
    }
    fout << -1;
    return 0;
}