Cod sursa(job #1664680)

Utilizator medicinedoctoralexandru medicinedoctor Data 26 martie 2016 13:56:58
Problema Elementul majoritar Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>
using namespace std;
 
long long n,a[1000000],q;
 
void lire()
{
    long long i;
    ifstream f("elmaj.in");
    f >> n;
    for (i=1; i<=n; i++)
        f >> a[i];
    f.close();
}
 
void sw(long long *x,long long *y)
{
    long long q=*x;
    *x=*y;
    *y=q;
}
 
void qs(long long l, long long r)
{
    long long i=l,j=r; long long q=a[(i+j)/2];
    while (i<j)
    {
        while (a[i]<q) i++;
        while (a[j]>q) j--;
        if (i<=j)
        {
            sw(&a[i],&a[j]);
            i++;
            j--;
        }
    }
    if (i<r) qs(i,r);
    if (j>l) qs(l,j);
}
 
long long lu()
{
    long long y=0,x=a[n/2];
	for (int i=1; i<=n; i++)
		if (a[i]==x) y++;
	q=x;
	return y;
}
 
void ecrire(long long x)
{
    ofstream f("elmaj.out");
    if (x>(n / 2)) f << q << ' ' << x; else f << -1;
    f.close();
}
 
int main()
{
    lire();
    qs(1,n);
    ecrire(lu());
    return 0;
}