Cod sursa(job #3266556)

Utilizator divadddDavid Curca divaddd Data 9 ianuarie 2025 14:14:52
Problema Elementul majoritar Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.63 kb
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 1e6+2;
int n,v[NMAX];

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

int main() {
  fin >> n;
  for(int i = 1; i <= n; i++){
    fin >> v[i];
  }
  // heavy hitters
  int cand = v[1], vf = 1;
  for(int i = 2; i <= n; i++){
    if(v[i] == cand){
      vf++;
    }else{
      vf--;
      if(vf == 0){
        cand = v[i];
        vf = 1;
      }
    }
  }
  // check
  vf = 0;
  for(int i = 1; i <= n; i++){
    vf += (v[i] == cand);
  }
  if(vf >= n/2+1){
    fout << cand << " " << vf;
  }else{
    fout << "-1";
  }
  return 0;
}