Cod sursa(job #3004042)

Utilizator iProgramInCppCluci Andrei iProgramInCpp Data 16 martie 2023 09:07:01
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("loto.in");
ofstream fout("loto.out");
int v[101],nw,n,S;
struct stuff{
    int x; int m;
    bool operator< (const stuff& b) const { return x < b.x; }
} w[101*101*101];


int main()
{
    fin >> n >> S;
    for (int i=0; i<n; i++) {
        fin >> v[i];
    }
    for (int i=0; i<n; i++)
        for (int j=i; j<n; j++)
            for (int k=j; k<n; k++)
                w[nw++] = { v[i]+v[j]+v[k], i*10000+j*100+k };
    sort(&w[0], &w[nw]);
    for (int i=0; i<nw; i++)
    {
        int st=0, dr=nw-1;
        while (st<=dr)
        {
            int m=(st+dr)/2;
            int s = w[i].x + w[m].x;
            if (s == S)
            {
                int x[6];
                x[0] = w[i].m % 100;
                x[1] = w[i].m / 100 % 100;
                x[2] = w[i].m / 10000 % 100;
                x[3] = w[m].m % 100;
                x[4] = w[m].m / 100 % 100;
                x[5] = w[m].m / 10000 % 100;
                sort(&x[0], &x[6]);
                for (int i=0; i<6; i++)
                    fout << v[x[i]] << ' ';
                return 0;
            }

            if (s < S)
                st = m+1;
            else
                dr = m-1;
        }
    }

    fout << -1;

    return 0;
}