#include <iostream>

using namespace std;

int getNumWithAppearHalf(int *nArray, int n) {

  if(nArray==NULL || n<1)
    return -1;

  int num = nArray[0];
  int times = 1;

  for(int i=1; i<n; i++) {
    if(num==nArray[i]) {
      times++;
    } else {
      times--;
    }

    if(times==0) {
      num = nArray[i];
      times=1;
    }
  }

  times=0;
  for(int i=0; i<n; i++) {
    if(num==nArray[i])
      times++;
  }

  if(times*2<=n)
    return -1;

  return num;
}

int main(int argc, char **argv) {

  int array[] = {2,3,2,3,3,2,2,3};
  for(int i=0; i<8; i++) 
    cout << array[i] << " ";
  cout << endl;

  cout << getNumWithAppearHalf(array, 8) << endl;

  return 0;
}
