Cod sursa(job #2402343)

Utilizator CezarTDTodirisca Cezar CezarTD Data 10 aprilie 2019 16:56:44
Problema Loto Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <fstream>
#include <algorithm>

using namespace std;

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

struct sir
{
    int s,x1,x2,x3;
} q[1000001];

int cmp(const sir a, const sir b)
{
    return a.s<b.s;
}

int main()
{
    int n,S,v[101],c=0;
    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++)
            {
                q[++c].s=v[i]+v[j]+v[k];
                q[c].x1=v[i];
                q[c].x2=v[j];
                q[c].x3=v[k];
            }
        }
    }
    sort(q+1,q+c,cmp);
    for(int i=1;i<=c;i++)
    {
        int st=1;
        int dr=c;
        while(st<=dr)
        {
            int m=(st+dr)/2;
            if(q[m].s==S-q[i].s)
            {
                fout<<q[i].x1<<' '<<q[i].x2<<' '<<q[i].x3<<' ';
                fout<<q[m].x1<<' '<<q[m].x2<<' '<<q[m].x3<<'\n';
                return 0;
            }
            if(q[m].s<S-q[i].s)st=m+1;
            else dr=m-1;

        }
    }
    fout<<-1;
    return 0;
}