Cod sursa(job #1277476)

Utilizator yukinaDascalescu Dana yukina Data 27 noiembrie 2014 19:00:49
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
// Algoritm de 100 puncte pe infoarena 
// Aceasta solutie are complexitatea O(n log n), nu foloseste memorie suplimentara, dar suprascrie sirul initial.
#include<fstream>
#include <algorithm>
#define maxn 1000001
using namespace std;
ifstream f("elmaj.in");
ofstream g("elmaj.out");
int n,maj,nrpoz,v[maxn];
int sortMajority(int n, int a[], int &nr)
{	sort (a, a + n);
    int i = 0;
    while (i < n) 
	{     int j = i;
          while (j < n && a[j + 1] == a[i]) j++;
		  nr=j-i+1;
          if (nr > n/2) return (a[i]);
          i = j + 1;
    }
    return -1;
}

int main(void)
{	f>>n;
	for(int i=0;i<n;i++) f>>v[i];
	maj=sortMajority(n,v,nrpoz);
	if(maj==-1) g<<"-1\n";
		else g<<maj<<' '<<nrpoz<<'\n';
	g.close(); return 0;
}