Cod sursa(job #1515222)

Utilizator c0rn1Goran Cornel c0rn1 Data 1 noiembrie 2015 12:08:54
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <cstdio>
#include <algorithm>
#define NMAX 1000008

using namespace std;

int n;
int a[NMAX];
int elementMajoritar, nrAparitii, existaElmaj;

void readData()
{
   scanf("%d\n", &n);
   for (int i = 1; i <= n; ++i){
      scanf("%d ", &a[i]);
   }
}

void processData()
{
   int nrNecuplati = 0;
   for (int i = 1; i <= n; ++i){
      if (nrNecuplati == 0){
         nrNecuplati = 1;
         elementMajoritar = a[i];
      }
      if (elementMajoritar != a[i])
         nrNecuplati--;
      else
         nrNecuplati++;
   }
   for (int i = 1; i <= n; ++i)
      if (a[i] == elementMajoritar)
         nrAparitii++;
   if (nrAparitii > n/2)
      existaElmaj = 1;
}

void printData()
{
   if (existaElmaj){
      printf("%d %d\n", elementMajoritar, nrAparitii);
      return;
   }
   printf("-1\n");
}

int main()
{
   freopen("elmaj.in", "r", stdin);
   freopen("elmaj.out", "w", stdout);
   readData();
   processData();
   printData();

   return 0;
}