Cod sursa(job #1125917)

Utilizator alexteStefanescu Alexandru Catalin alexte Data 26 februarie 2014 20:13:00
Problema Elementul majoritar Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include<fstream>
#include<cstdlib>
int n,x[1000003],i,elmaj,nrap,m,j;
using namespace std;
int cmp(const void* a, const void* b)
{
    int x=*(int*)a,y=*(int*)b;
    return x-y;
}
int main()
{
    ifstream fin("elmaj.in");
    ofstream fout("elmaj.out");
    fin>>n;
    m=n/2;
    for(i=0;i<n;i++)
        fin>>x[i];
    qsort(x,n,sizeof(int),cmp);
    i=0;
    j=m-1;
    while(i<m&&j>i)
    {
        if(x[i]==x[i+m])
            {
                elmaj=x[i];
                nrap=m+1;
                i=i+m+1;
                while(x[i]==elmaj)
                {
                    nrap++;
                    i++;
                }
                i=n+1;
            }
        if(x[j]==x[j-m])
            {
                elmaj=x[j];
                nrap=m+1;
                j=j-m-1;
                while(x[j]==elmaj)
                {
                    nrap++;
                    j--;
                }
                j=i-1;
            }
            i++;
            j--;
    }
    fout<<elmaj<<' '<<nrap;
    fout.close();
    return 0;
}