Cod sursa(job #2931106)

Utilizator MrPuzzleDespa Fabian Stefan MrPuzzle Data 30 octombrie 2022 15:21:50
Problema Elementul majoritar Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.27 kb
#include<fstream>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<climits>
#include<iomanip>
#include<cstring>
#include<bitset>

#define MAX 1000000

using namespace std;

ifstream f("elmaj.in");
ofstream g("elmaj.out");

//ifstream f("in.in");
//ofstream g("out.out");

int v[MAX+5],s[MAX+5];
int n;
int st,dr,poz1,poz2,mij;


int main(){

    f>>n;
    for(int i=1;i<=n;i++){
        f>>v[i];
        s[i] = v[i];
    }

    sort(s+1,s+n+1);

    for(int i=1;i<=n;i++){

        ///gaseste capat stanga
        st=1;dr=n;
        while(st<=dr){
            mij = (st+dr)/2;
            if(s[mij]>=v[i]){
                poz1 = mij;
                dr = mij-1;
            }else{
                st = mij+1;
            }
        }

        ///gaseste capat dreapta
        st=1;dr=n;
        while(st<=dr){
            mij = (st+dr)/2;
            if(s[mij]<=v[i]){
                poz2 = mij;
                st = mij+1;
            }else{
                dr = mij-1;
            }
        }

        if(poz2-poz1+1 >= n/2+1){
            g<<v[i]<<" "<<poz2-poz1+1;
            f.close();
            g.close();
            return 0;
        }

    }

    g<<-1;

    f.close();
    g.close();
    return 0;
}