Cod sursa(job #2382525)

Utilizator butnaru_vlad2003Butnaru Vlad butnaru_vlad2003 Data 18 martie 2019 14:13:43
Problema Loto Scor 0
Compilator cpp-64 Status done
Runda cautare-binara Marime 1.24 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in ("loto.in");
ofstream out ("loto.out");
int v[102];
struct suma
{
    int x1,x2,x3,s;
};
suma sume[1000005];
int n,s,cnt=0;
bool verfmutare(suma a,suma b)
{
    return a.s<b.s;
}
int main()
{
    in>>n>>s;
    for (int i=1;i<=n;++i)
        in>>v[i];
    for (int i=1;i<=n;++i)
        for (int k=i;k<=n;++k)
            for (int j=k;j<=n;++j)
                {
                    ++cnt;
                    sume[cnt].s=v[i]+v[j]+v[k];
                    sume[cnt].x1=v[i];
                    sume[cnt].x2=v[k];
                    sume[cnt].x3=v[j];
                }
    sort(sume+1,sume+cnt+1,verfmutare);
    for(int i = 1; i <= cnt; ++i)
    {
        int s1=s-sume[i].s;
        int l=1,r=cnt,ok=0,ok1=0;
        while(l<=r && !ok)
        {
            int mid=(l+r)/2;
            if (sume[mid].s==s1)
            {
                out << sume[i].x1 << " " << sume[i].x2 << " " << sume[i].x3 << " " << sume[mid].x1 << " " << sume[mid].x2 << " " << sume[mid].x3;
                return 0;
            }
            if (sume[mid].s<s1)
                l=mid+1;
            else
                r=mid-1;
        }
    }
    out << -1;
    return 0;
}
}