Cod sursa(job #125560)

Utilizator radu_voroneanuVoroneanu Radu Stefan radu_voroneanu Data 20 ianuarie 2008 14:44:17
Problema Restante Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.29 kb
var a,b:array[0..36001] of string[16];
    nr:array['a'..'z'] of longint;
    f,g:text;
    i,j,t,k,n,numar:longint;

procedure ordon(var x:string[16]);
 var i:longint;
     c:char;
 begin
  for i:=1 to length(x) do
   inc(nr[x[i]]);
  x:='';
  for c:='a' to 'z' do
   for i:=1 to nr[c] do
    x:=x+c;
  for i:=1 to length(x) do
   dec(nr[x[i]]);
 end;

procedure interclasez(st,mij,dr:longint);
 begin
  for i:=st to dr do
   b[i]:=a[i];
  i:=st;
  j:=mij+1;
  k:=st;
  while (i<=mij) and (j<=dr) do
   if b[i]<b[j] then begin
    a[k]:=b[i];
    inc(i);
    inc(k);
   end
   else begin
    a[k]:=b[j];
    inc(j);
    inc(k);
   end;
  for t:=i to mij do begin
   a[k]:=b[t];
   inc(k);
  end;
  for t:=j to dr do begin
   a[k]:=b[t];
   inc(k);
  end;
 end;

procedure mergesort(st,dr:longint);
 var mij:longint;
 begin
  if st<dr then begin
   mij:=(st+dr) shr 1;
   mergesort(st,mij);
   mergesort(mij+1,dr);
   interclasez(st,mij,dr);
  end;
 end;

begin
 assign(f,'restante.in'); reset(f);
 assign(g,'restante.out'); rewrite(g);
 readln(f,n);
 for i:=1 to n do begin
  readln(f,a[i]);
  ordon(a[i]);
 end;
 mergesort(1,n);
 for i:=1 to n do
  if (a[i]<>a[i+1]) and (a[i]<>a[i-1]) then
   inc(numar);
 writeln(g,numar);
 close(f); close(g);
end.