Cod sursa(job #2942648)

Utilizator IRadu1529Radu Ionescu IRadu1529 Data 19 noiembrie 2022 22:26:32
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.28 kb
#include<bits/stdc++.h>
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
int n, s, cnt, x, v[105];
struct loto {
    int s;
    int x1;
    int x2;
    int x3;
}suma[1000005];
bool comp(const loto& a, const loto& b)
{
    return a.s < b.s;
}
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 = i; j <= n; j++)
            for (int k = j; k <= n; k++)
            {
                suma[++cnt].s = v[i] + v[j] + v[k];
                suma[cnt].x1 = v[i];
                suma[cnt].x2 = v[j];
                suma[cnt].x3 = v[k];
            }
    sort(suma + 1, suma + cnt + 1, comp);
    for (int i = 1; i <= cnt; i++)
    {
        int s1 = s - suma[i].s;
        int l = 1, r = cnt;
        while (l <= r)
        {
            int mid = (l + r) / 2;
            if (suma[mid].s == s1)
            {
                fout << suma[i].x1 << " " << suma[i].x2 << " " << suma[i].x3 << " " << suma[mid].x1 << " " << suma[mid].x2 << " " << suma[mid].x3 << '\n';
                return 0;
            }
            if (suma[mid].s < s1)
                l = mid + 1;
            else r = mid - 1;
        }
    }
    fout << -1 << '\n';
    return 0;
}