Cod sursa(job #3184891)

Utilizator Bolfa_DBolfa Diana Bolfa_D Data 17 decembrie 2023 12:29:06
Problema Loto Scor 35
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
struct poz{
    int sum;
    int a,b,c;
};

poz mat[1000010];
int v[110], n,s,nr;


bool ch(poz x, poz y)
{
    if(x.sum<=y.sum)
        return 1;
    return 0;
}

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=0;j<n;++j)
            for(int k=0;k<n;++k)
            {
                mat[nr].sum=v[i]+v[j]+v[k];
                mat[nr].a=v[i];
                mat[nr].b=v[j];
                mat[nr++].c=v[k];
            }

    sort(mat,mat+nr, ch);

    int st, dr, mij, b;
    bool ok=0;
    for(int i=0;i<nr && ok==0;++i)
    {
        b=s-mat[i].sum;
        st=1; dr=nr-1;

        while(st<dr)
        {
            mij=(st+dr)/2;
            if(mat[mij].sum==b) st=dr=mij;
            else if(mat[mij].sum<b) st = mij+1; ///3 5 9 10 13
            else dr=mij-1;
        }

        if(mat[st].sum==b)
        {
            fout<<mat[st].a<< " "<<mat[st].b<<" "<<mat[st].c<<" ";
            fout<<mat[i].a<<" "<<mat[i].b<<" "<<mat[i].c;
            ok=1;
        }

    }

    if(ok==0)
        fout<<-1;

    return 0;
}