Cod sursa(job #1906297)

Utilizator VasilescuVasilescu Eliza Vasilescu Data 6 martie 2017 13:09:11
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2013 Marime 0.7 kb
#include <cstdio>

using namespace std;

int v[3000000];

int main() {
  FILE *fin, *fout;
  fin=fopen( "elmaj.in", "r" );
  fout=fopen("elmaj.out", "w");
  int n, i, cont, m;

  fscanf( fin, "%d", &n );
  for ( i = 0; i < n; i++ )
    fscanf( fin, "%d", &v[i] );

  m = v[0];
  cont = 1;
  for ( i = 1; i < n; i++ )
    if( v[i] == m )
      cont++;
    else {
      cont--;
      if( cont < 0 ) {
        m=v[i];
        cont=1;
      }
    }


  cont=0;
  for ( i = 0; i < n; i++ )
    if ( v[i] == m )
      cont++;

  if ( cont > n / 2 )
    fprintf( fout, "%d %d\n", m, cont );
  else
    fprintf( fout, "-1\n" );

  fclose( fin );
  fclose( fout );

  return 0;
}