Cod sursa(job #2861500)

Utilizator indianu_talpa_iuteTisca Catalin indianu_talpa_iute Data 4 martie 2022 08:43:17
Problema Elementul majoritar Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <bits/stdc++.h>
#define MAX_N 1000000

using namespace std;

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

int arr[MAX_N];
int elmaj(int n, int arr[], int &ap) {
    int cand = -1, k = 0;
    for (int i = 0; i < n; i++) {
        if (k == 0) {
            cand = arr[i];
            k = 1;
        } else if (cand == arr[i]) {
            k++;
        } else {
            k--;
        }
    }

    if (cand == -1)
        return cand;

    ap = 0;
    for (int i = 0; i < n; i++)
        if (arr[i] == cand)
            ap++;
    if (ap != n / 2 + 1)
        return -1;
    return cand;
}

void citire(int &n, int arr[]) {
    fin >> n;
    for (int i = 0; i < n; i++)
        fin >> arr[i];
}

int main()
{
    int n, ap;
    citire(n, arr);
    int cand = elmaj(n, arr, ap);
    if (cand != -1)
        fout << cand << ' ' << ap;
    else
        fout << -1;
    return 0;
}