Cod sursa(job #3120750)

Utilizator unomMirel Costel unom Data 8 aprilie 2023 14:12:34
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <fstream>
#include <algorithm>

using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
struct element
{
    int sum, x, y, z;
}el[1000001];
int n, s, i, a[101], j, k, l, n2, st, dr, mij, sm;
bool ok;
bool comp(element nr1, element nr2)
{
    return nr1.sum<nr2.sum;
}
int main()
{
    f>>n>>s;
    for(i=1; i<=n; i++)
        f>>a[i];

    for(i=1; i<=n; i++)
    {
        for(j=i; j<=n; j++)
        {
            for(k=j; k<=n; k++)
            {
                sm=a[i]+a[j]+a[k];
                el[++l].sum=sm;
                el[l].x=i;
                el[l].y=j;
                el[l].z=k;
            }
        }
    }

    sort(el+1, el+l+1, comp);

    ok=1;
    for(i=1; i<=l*ok; i++)
    {
        n2=s-el[i].sum;
        st=i, dr=l;
        while(st<=dr)
        {
            mij=(st+dr)/2;
            if(n2==el[mij].sum)
            {
                g<<a[el[i].x]<<' '<<a[el[i].y]<<' '<<a[el[i].z]<<' '<<a[el[mij].x]<<' '<<a[el[mij].y]<<' '<<a[el[mij].z];
                ok=0;
                break;
            }
            else
            {
                if(el[mij].sum<n2)
                    st=mij+1;
                else
                    dr=mij-1;
            }
        }
    }

    if(ok==1)
    {
        g<<"-1";
    }
    return 0;
}