Cod sursa(job #3205276)

Utilizator Gullit_Ivan Matei Gullit_ Data 19 februarie 2024 10:05:51
Problema Elementul majoritar Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.66 kb
/******************************************************************************

                              Online C++ Compiler.
               Code, Compile, Run and Debug C++ program online.
Write your code in this editor and press "Run" button to compile and execute it.

*******************************************************************************/

#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;
}