Cod sursa(job #2294347)

Utilizator hunorBudai Hunor hunor Data 2 decembrie 2018 12:02:34
Problema Elementul majoritar Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include<fstream>
#include<algorithm>

using namespace std;

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

int cb1(int a[],int mic,int mare,int x)
{
    if(mare-mic-1==0)return mic;
    if(x<=a[(mic+mare)/2])return cb1(a,mic,(mic+mare)/2,x);
    else return cb1(a,(mic+mare)/2,mare,x);
}

int cb2(int a[],int mic,int mare,int x)
{
    if(mare-mic-1==0)return mic;
    if(x<a[(mic+mare)/2])return cb2(a,mic,(mic+mare)/2,x);
    else return cb2(a,(mic+mare)/2,mare,x);
}

int n,a[1000001],maxx;

int main()
{
    fin>>n;
    for(int i=1;i<=n;i++)
    {
        fin>>a[i];
    }
    sort(a+1,a+n+1);
    for(int i=1;i<=n;i++)
    {
        if(cb2(a,0,n+1,a[i])-cb1(a,0,n+1,a[i])>n/2)
        {
            fout<<a[i]<<" "<<cb2(a,0,n+1,a[i])-cb1(a,0,n+1,a[i]);
            return 0;
        }
        i=cb2(a,0,n+1,a[i]);
    }
    fout<<-1;
    return 0;
}