Cod sursa(job #2187257)

Utilizator NeredesinI am not real Neredesin Data 26 martie 2018 12:38:59
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>

#define verf ++poz == CMAX ? in.read (ch, CMAX), poz = 0 : 0

using namespace std;

ifstream in("elmaj.in");
ofstream out("elmaj.out");

const int NMAX = 1000000;
const int CMAX = 1 << 10;

int n, val, ap, poz;
int v[1 + NMAX];
char ch[CMAX];

void read(int &x ) {
  if(ch[0] == '\0')
    in.read (ch, CMAX) ;
  else
    for(; ch[poz] < '0' || ch[poz] > '9' ; verf);
  for(x = 0; ch[poz] >= '0' && ch[poz] <= '9'; x = x * 10 + ch[poz] - '0', verf) ;
}

int main()
{
  read(n);
  for(int i = 1; i <= n; i++) {
    read(v[i]);
    if(v[i] == val)
      ap++;
    else
      ap--;
    if(ap < 0) {
      val = v[i];
      ap = 1;
    }
  }
  ap = 0;
  for(int i = 1; i <= n; i++) {
    if(v[i] == val)
    ap++;
  }
  if(ap >= n / 2 + 1)
    out << val << ' ' << ap << '\n';
  else
    out << -1 << '\n';

  in.close();
  out.close();
  return 0;
}