Cod sursa(job #407173)

Utilizator andrey932Andrei andrey932 Data 2 martie 2010 09:28:21
Problema Restante Scor 80
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.66 kb
var x:array[0..30005] of string[16];

    t:text;
    i,j,n:longint;
    s,sg:string;




var loc,lss,ldd:longint;
p:string;
procedure qsorta(var x:array of string[16]; ls,ld:integer);
var pi:integer;
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[16]; l:integer);
begin
qsorta(x,1,l);
end;


var p2:char;
procedure qsorts(var x:string; ls,ld:integer);
var pi:integer;
begin
lss:=ls; ldd:=ld; loc:=ls;
pi:=(ls+ld) shr 1;
p2:=x[pi]; x[pi]:=x[ls];
//lss:=lss+1;
while lss<ldd do
  begin
    while ((ord(x[ldd])>=ord(p2))and(lss<ldd)) do ldd:=ldd-1;
    x[loc]:=x[ldd]; loc:=ldd;
    while ((ord(x[lss])<ord(p2))and(lss<ldd)) do lss:=lss+1;
    x[loc]:=x[lss]; loc:=lss;
  end;
x[loc]:=p2;
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:integer);
begin
qsorts(x,1,l);
end;




begin
assign(t,'restante.in'); reset(t);
readln(t,n);
for i:=1 to n do
  begin
    j:=0;
    readln(t,s);
    quicksorts(s,length(s));
    x[i]:=s;
  end;
quicksorta(x,n);
//for i:=1 to n do writeln(x[i]); readln;
j:=0;
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.