Cod sursa(job #3164864)

Utilizator BucsMateMate Bucs BucsMate Data 4 noiembrie 2023 15:51:44
Problema Elementul majoritar Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    ifstream input("elmaj.in");
    ofstream output("elmaj.out");
    int a[100000], b[100000], dbmaj=0, i, N, temp;
    input>>N;
    for(i=0; i<N; i++){
        input>>a[i];
        b[i]=a[i];
    }
    int bal=0, jobb=1;
    while(jobb<N){
        if(a[bal]!=a[jobb]){
            a[bal]=-1;
            a[jobb]=-1;
            if(bal==0){
                jobb=jobb+2;
                bal=jobb-1;
            } else {
                while(a[bal]==-1 && bal>0){
                    bal=bal-1;
                }
                if(bal==0){
                    jobb=jobb+2;
                    bal=jobb-1;
                }
                else{
                    jobb=jobb+1;
                }
            }
        } else {
            jobb=jobb+1;
            bal=jobb-1;
        }
    }
    if(bal<N) temp=a[bal];
    else temp=a[bal-1];
    for(i=0; i<N; i++){
        if(b[i]==temp) dbmaj++;
    }
    if(dbmaj>=N/2+1) output<<temp<<" "<<dbmaj;
    else output<<-1;
    return 0;
}