Cod sursa(job #2555326)

Utilizator Andrei012Trache Andrei Andrei012 Data 23 februarie 2020 21:34:50
Problema Loto Scor 25
Compilator cpp-64 Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I Marime 1.31 kb
#include <bits/stdc++.h>

using namespace std;

struct ura{
    int suma,a,b,c;
};
ura v[1000001];
int numere[101];

bool cmp(ura a,ura b){
    if(a.suma<b.suma)
        return true;
    return false;
};

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

    int n,s,S,i,j,k,st,dr,mij,val,elem;
    cin>>n>>S;
    s=0;
    for(i=1;i<=n;i++)
        cin>>numere[i];
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            for(k=1;k<=n;k++){
                s++;
                v[s].suma=numere[i]+numere[j]+numere[k];
                v[s].a=numere[i];
                v[s].b=numere[j];
                v[s].c=numere[k];
            }
    sort(v+1,v+s+1,cmp);
    for(i=1;i<=s;i++){
        val=S-v[i].suma;
        st=1;
        dr=s-1;
        elem=-1;
        while(st<=dr){
            mij=(st+dr)/2;
            if(v[mij].suma==val){
                elem=mij;
                break;
            }
            else{
                if(v[mij].suma<val)
                    st=mij+1;
                else
                    dr=mij-1;
            }
        }
        if(elem!=-1){
            cout<<v[i].a<<" "<<v[i].b<<" "<<v[i].c<<" "<<v[elem].a<<" "<<v[elem].b<<" "<<v[elem].c;
            return 0;
        }
    }
    cout<<-1;
    return 0;
}