Cod sursa(job #406339)

Utilizator andrey932Andrei andrey932 Data 1 martie 2010 14:20:14
Problema Restante Scor 10
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.55 kb
var x:array[0..30000] of string;
    t:text;
    i,j,n:longint;
    s:string;


var loc,lss,ldd,p:longint;
procedure qsorta(var x:array of string; ls,ld:longint);
var pi:longint;
    p:string;
begin
lss:=ls; ldd:=ld; loc:=ls;
pi:=(ls+ld) shr 1;
p:=x[pi]; x[pi]:=x[ls];
lss:=lss+1;
while lss<ldd do
  begin
    while ((x[ldd]>=p)and(lss<ldd)) do ldd:=ldd-1;
    x[loc]:=x[ldd]; loc:=ldd;
    while ((x[lss]<p)and(lss<ldd)) do lss:=lss+1;
    x[loc]:=x[lss]; loc:=lss;
  end;
x[loc]:=p;
pi:=loc;
if (ls<pi-1) then
  qsorta(x,ls,pi-1);
if (pi+1<ld) then
  qsorta(x,pi+1,ld);
end;
procedure quicksorta(var x:array of string; l:longint);
begin
qsorta(x,1,l);
end;

procedure qsorts(var x:string; ls,ld:longint);
var pi:longint;
    p:char;
begin
lss:=ls; ldd:=ld; loc:=ls;
pi:=(ls+ld) shr 1;
p:=x[pi]; x[pi]:=x[ls];
lss:=lss+1;
while lss<ldd do
  begin
    while ((x[ldd]>=p)and(lss<ldd)) do ldd:=ldd-1;
    x[loc]:=x[ldd]; loc:=ldd;
    while ((x[lss]<p)and(lss<ldd)) do lss:=lss+1;
    x[loc]:=x[lss]; loc:=lss;
  end;
x[loc]:=p;
pi:=loc;
if (ls<pi-1) then
  qsorts(x,ls,pi-1);
if (pi+1<ld) then
  qsorts(x,pi+1,ld);
end;
procedure quicksorts(var x:string; l:longint);
begin
qsorts(x,1,l);
end;

begin
assign(t,'restante.in'); reset(t);
readln(t,n);
for i:=1 to n do
  begin
    read(t,s);
    quicksorts(s,length(s));
    x[i]:=s;
  end;
quicksorta(x,n);
for i:=1 to n do
  if ((x[i]<>x[i-1])and(x[i]<>x[i+1])) then j:=j+1;
close(t);
assign(t,'restante.out'); rewrite(t);
writeln(t,j);
close(t);





end.