Cod sursa(job #724140)

Utilizator ionutz32Ilie Ionut ionutz32 Data 26 martie 2012 11:45:21
Problema Elementul majoritar Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 1.09 kb
type ref=^nod;
nod=record
    val,nr:longint;
    adr:ref;
    end;
var hash:array[0..1000005] of ref;
n,v,i,poz,max,elem:longint;
f,g:text;
u:ref;
gasit:boolean;
bufin,bufout:array[0..1000005] of byte;
const fi=(sqrt(5)-1)/2;
begin
assign(f,'elmaj.in');
assign(g,'elmaj.out');
reset(f);rewrite(g);
settextbuf(f,bufin);
settextbuf(g,bufout);
readln(f,n);
for i:=1 to n do
    begin
    read(f,v);
    poz:=trunc((v*fi-trunc(v*fi))*n)+1;
    u:=hash[poz];
    gasit:=false;
    while u<>nil do
          begin
          if u^.val=v then
             begin
             gasit:=true;
             break;
             end;
          u:=u^.adr;
          end;
    if gasit then
       begin
       inc(u^.nr);
       if u^.nr>max then
          begin
          elem:=v;
          max:=u^.nr;
          end;
       end
    else
        begin
        new(u);
        u^.val:=v;
        u^.nr:=1;
        u^.adr:=hash[poz];
        hash[poz]:=u;
        end;
    end;
if max>=n div 2+1 then
   writeln(g,elem,' ',max)
else
    writeln(g,-1);
close(f);close(g);
end.