Cod sursa(job #2218757)

Utilizator alex.cojocaruAlex Cojocaru alex.cojocaru Data 5 iulie 2018 16:56:44
Problema Elementul majoritar Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <stdio.h>
#include <stdlib.h>

int v[2000001] ;

int main()
{
  FILE *fin, *fout ;
  fin = fopen ("majoritar.in", "r" ) ;
  fout = fopen ("majoritar.out", "w" ) ;
  int contor, n, i, majoritar, element ;
  fscanf (fin, "%d%d", &n, &majoritar ) ;
  contor = 1 ;
  v[0] = majoritar ; /// Primul element majoritar este primul element din vector
  for (i = 1 ; i < n ; i++ )  {
    fscanf (fin, "%d", &element ) ;
    v[i] = element ;
    if (element != majoritar ) { /// Daca este element majoritar
          contor--;
          if (contor < 0 ) { /// Daca contorul e negativ, luam noul element majoritar
          majoritar = element ;
          contor = 1 ;
        }
    }
    else
        contor++;
  }
  if (contor > 0 ) { /// Se face proba rezultatului
    contor = 0 ;
    for (i = 0 ; i < n ; i++ )
        if (v[i] == majoritar )
            contor++;
    if (contor >= n/2+1) /// Daca este element majoritar
        fprintf (fout, "%d %d", majoritar, contor ) ;
    else
        fprintf (fout, "-1" ) ;
  }
  else
      fprintf (fout, "-1" ) ;
  return 0;
}