Cod sursa(job #1203588)

Utilizator mucalmicmarcel almic mucalmic Data 30 iunie 2014 21:50:48
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <stdio.h>
#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
#include <string.h>
#include <set>

#define N 1000001

#define max(a,b) ((a) >= (b) ? (a) : (b))

using namespace std;

int compare (const void * a, const void * b)
{	
  return ( *(int*)a - *(int*)b );
}


int v[N], f[N] = {0};


int main () {

	FILE *fi, *g;
	fi = freopen("elmaj.in", "r", stdin);
	g = freopen("elmaj.out", "w", stdout);

	int i, j, k, n, x;
	char c;
	
	scanf("%d", &n);
	
	scanf("%d", &v[0]);
	x = v[0];
	k = 1;
	for (j = 1; j<n; j++) {
		scanf("%d", &v[j]);
		if (x == v[j] && k > 0) 
			k++;
		else if (!k) {
			x = v[j];
			k ++;
		}
		else if (x !=v[j] )
			k--;
	}
	
	
	k = 0;
	for (i = 0; i < n; i++) 
		if(v[i] == x)
			k++;


	if (k > n/2)	
		printf("%d %d\n", x, k);
	else
		printf("-1\n");
		
	
	return 0;
	
}