Cod sursa(job #169405)

Utilizator antoanelaAntoanela Siminiuc antoanela Data 1 aprilie 2008 17:54:03
Problema Restante Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.49 kb
program restante;
var f,g:text;
    v:array[0..40000]of string;
    p:array[1..40000]of longint;
    k,n,l,cont,y,i:longint;

function poz(li,ls:longint):longint;
var i,j,modi,modj,m:longint;
man:char;
begin
i:=li;
j:=ls;
modi:=0;
modj:=-1;
while (i<=j)do
  begin
    if (v[y,i]>v[y,j])then
      begin
        man:=v[y,i];
        v[y,i]:=v[y,j];
        v[y,j]:=man;
        m:=modi;
        modi:=-modj;
        modj:=-m;
      end;
    i:=i+modi;
    j:=j+modj;
  end;
poz:=i;
end;

procedure quick(li,ls:longint);
begin
if (li<ls)then
  begin
    k:=poz(li,ls);
    quick(li,k-1);
    quick(k+1,ls);
  end;
end;

function poz2(li,ls:longint):longint;
var i,j,modi,modj,m:longint;
man:string;
begin
i:=li;
j:=ls;
modi:=0;
modj:=-1;
while (i<=j)do
  begin
    if (v[i]>v[j])then
      begin
        man:=v[i];
        v[i]:=v[j];
        v[j]:=man;
        m:=modi;
        modi:=-modj;
        modj:=-m;
      end;
    i:=i+modi;
    j:=j+modj;
  end;
poz2:=i;
end;

procedure quick2(li,ls:longint);
var i:longint;
begin
if (li<ls)then
  begin
    k:=poz2(li,ls);
    quick2(li,k-1);
    quick2(k+1,ls);
  end;
end;

begin
assign(f,'restante.in');
assign(g,'restante.out');
reset(f);
rewrite(g);
readln(f,n);
for y:=1 to n do
  begin
    readln(f,v[y]);
    l:=length(v[y]);
    quick(1,l);
  end;
quick2(1,n);
{for i:=1 to n do
  if (v[i]<>v[i+1])and(v[i]<>v[i-1])then inc(cont); }
writeln(g,cont);
close(f);
closE(g);
end.