Cod sursa(job #3000984)

Utilizator bostanlucastefanBostan Luca-Stefan bostanlucastefan Data 13 martie 2023 09:37:25
Problema Loto Scor 95
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <algorithm>
#include <fstream>
#include <vector>
#define FAST ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define pb push_back

using namespace std;
using ll=long long;
using vl=vector<ll>;

ifstream cin("loto.in");
ofstream cout("loto.out");

struct le3{
    ll sum;
    ll a,b,c;
    bool operator< (const le3 o) const{
        return sum<o.sum;
    }
};

vl v;
ll st,dr,mij;
ll n,s,i,j,k;
vector<le3> triplete;

int main()
{
    FAST
    cin>>n>>s;
    v.resize(n);
    for(auto &i:v)
        cin>>i;
    for(i=0; i<n; i++)
        for(j=i; j<n; j++)
            for(k=j; k<n; k++)
                triplete.pb({v[i]+v[j]+v[k],v[i],v[j],v[k]});
    sort(triplete.begin(),triplete.end());
    for(auto i:triplete)
    {
        st=1,dr=triplete.size();
        while(st<=dr)
        {
            mij=(st+dr)/2;
            if(triplete[mij].sum==s-i.sum)
            {
                cout<<i.a<<' '<<i.b<<' '<<i.c<<' '<<triplete[mij].a<<' '<<triplete[mij].b<<' '<<triplete[mij].c<<'\n';
                return 0;
            }
            if(triplete[mij].sum>s-i.sum)
                dr=mij-1;
            else
                st=mij+1;
        }
    }
    cout<<"-1\n";
    return 0;
}