Cod sursa(job #1148565)

Utilizator span7aRazvan span7a Data 20 martie 2014 21:31:58
Problema Elementul majoritar Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include<fstream>
using namespace std;
/*FILE *f=fopen("majoritar.in","r");
FILE *g=fopen("majoritar.out","w");*/
ifstream f("majoritar.in");
ofstream g("majoritar.out");
struct nod
{
    unsigned int inf;
    int nrap;
    nod* ld,*ls;
};
typedef nod* PNod;
PNod L[200000];
int ok=0,n;
unsigned int elmaj;
int NapEL;
void update(PNod &p,unsigned int x)
{
    if(p)
    {
        if(p->inf==x)
            {
                p->nrap++;
                if(p->nrap>=n/2+1)
                {
                    elmaj=p->inf;
                    NapEL=p->nrap;
                    ok=1;
                }
                return;
            }
        if(p->inf>x) update(p->ld,x);
        else update(p->ls,x);
    }
    else
    {
        p=new nod;
        p->inf=x;
        p->ls=p->ld=0;
        p->nrap=1;
    }
}
int main()
{
    int x,i;
    PNod r=0;
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>x;
        update(r,x);
    }
    if(ok==1)
        g<<elmaj<<" "<<NapEL;
    else g<<-1;
    return 0;
}