Cod sursa(job #3205285)

Utilizator sandrsSandra Paul sandrs Data 19 februarie 2024 10:17:58
Problema Elementul majoritar Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.35 kb
#include <fstream>
using namespace std;
ifstream cin("elmaj.in");
ofstream cout("elmaj.out");
int v[1000008];
int element(int n, int a[])
{
    int candidate = -1;
    int count = 0;
    for (int i = 0; i < n; i++)
    {
        if (count == 0)
        {
            candidate = a[i];
            count = 1;
        }
        else if (a[i] == candidate)
            count++;
        else
            count--;

    }
    int realCount = 0;
    for (int i = 0; i < n; i++)
    {
        if (a[i] == candidate)
            realCount++;
    }
    if (realCount > n / 2)
        return candidate;
    else
        return -1;
}
int contor(int n, int a[])
{
    int candidate = -1;
    int count = 0;
    for (int i = 0; i < n; i++)
    {
        if (count == 0)
        {
            candidate = a[i];
            count = 1;
        }
        else if (a[i] == candidate)
            count++;
        else
            count--;

    }
    int realCount = 0;
    for (int i = 0; i < n; i++)
    {
        if (a[i] == candidate)
            realCount++;
    }
    if (realCount > n / 2)
        return realCount;
    else
        return -1;
}
int main()
{
    int n;
    cin>>n;
    for(int i=0; i<n; i++)
    cin>>v[i];
    if(element(n,v)==-1)
    cout<<-1;
    else cout<<element(n,v)<<" "<<contor(n,v);

    return 0;
}