Cod sursa(job #742583)

Utilizator memaxMaxim Smith memax Data 30 aprilie 2012 18:19:19
Problema Elementul majoritar Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <fstream>
using namespace std;
int u=0,v=0;
struct cell{
       cell * dr;
       cell * st;
       int inf;
       int co;
       } *p=0;

void add(int k);

main(){
       ifstream inr ("elmaj.in");
       ofstream our ("elmaj.out");
       int n,a;
       inr >> n;
       for(int i=1; i<=n; i++){
               inr >> a;
               add(a);
               }
       if(u<(1+n/2)){ our << "-1"; }
       else         { our << v << " " << u; }
       }
           
           
void add(int k){
     cell *r;
     r=new cell;
     r->co=1;
     r->dr=r->st=0;
     r->inf=k;
     if(p==0){ p=r;  return; }
     cell * y, *x=p;
     while(x!=0){
                 y=x;
                 if(k==x->inf){ x->co++; 
                                if(x->co>u){ u=x->co; v=k; }
                                return; }
                 if(k>x->inf){ x=x->dr; }
                 else        { x=x->st; }
                 }
     if(k>y->inf){ y->dr=r; }
     else        { y->st=r; }
     }