Cod sursa(job #2211609)

Utilizator ewaldBerla Ewald ewald Data 11 iunie 2018 10:09:25
Problema Elementul majoritar Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("1.in");
ofstream g("1.out");

long long  n;
int c;
int i,nr;
int a[12];

void mergest(long long a[],int start, int endd)
{
    int d[endd-start+2];
    int mid=(start+endd)/2;
    int i=start,j=mid+1;
    int k=1;

    while(i<=mid && j<=endd)
    {
        if(a[i]<a[j])
            d[k++]=a[i++];
        else if(a[j]<a[i])
            d[k++]=a[j++];
        else
            d[k++]=a[i++],d[k++]=a[j++];
    }
    while(i<=mid)
        d[k++]=a[i++];
    while(j<=endd)
        d[k++]=a[j++];

    int p=1;
    for(i=start;i<=endd;i++)
        a[i]=d[p++];
        return;

}

void apelrec(long long a[],int s,int e)
{
    if(s==e)
        return;
    int m=(s+e)/2;
    apelrec(a,s,m);
    apelrec(a,m+1,e);
    mergest(a,s,e);
}

int main()
{
    long n;
    f>>n;

    long long a[100009],i;
    for(i=1;i<=n;i++)
        f>>a[i];
    apelrec(a,1,n);

    for(i=1;i<=n;i++)
        if(a[i] == a[n/2])
        nr++;
    if(nr >= (n/2)+1)
        g<<a[n/2]<<" "<<nr;
    else
        g<<-1;



}