Cod sursa(job #829543)

Utilizator OpportunityVlad Negura Opportunity Data 5 decembrie 2012 16:27:38
Problema Elementul majoritar Scor 70
Compilator fpc Status done
Runda Arhiva educationala Marime 0.82 kb
var a:array[1..1000010]of longint;
    n,i,k:longint;
    fi,fo:text;

procedure citire;
 begin
  readln(fi,n);
  k:=n div 2;
  for i:=1 to n do read(fi,a[i]);
 end;

procedure q(l,r:longint);
var aux,i,j,p:longint;
 begin
  i:=l; j:=r; p:=a[(i+j) div 2];
  while (i<j) do
   begin
    while a[i]<p do inc(i);
    while a[j]>p do dec(j);
    if i<=j then begin aux:=a[i]; a[i]:=a[j]; a[j]:=aux; inc(i); dec(j); end;
   end;
  if (k<=i)and(l<j) then q(l,j) else if (i<r) then q(i,r);
 end;

procedure afisare;
var nr:longint;
 begin
  nr:=0;
  for i:=1 to n do if a[k]=a[i] then inc(nr);
  if (nr>(n div 2)) then writeln(fo,a[k],' ',nr) else writeln(fo,-1);
 end;

BEGIN
 assign(fi,'elmaj.in'); reset(fi);
 assign(fo,'elmaj.out'); rewrite(fo);

  citire;
  q(1,n);
  afisare;

 close(fi); close(fo);
END.