Cod sursa(job #140143)

Utilizator DanielGGlodeanu Ioan Daniel DanielG Data 21 februarie 2008 13:00:21
Problema Restante Scor 50
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.82 kb
const max=3600;
type sir=string[16];
    List = array[1..Max] of sir;
var f:text;
 v:list; { in free pascal merg 36000 in pascal numaivreo 3700}
 n,i,nr,j:longint;
 s,auxs:sir;
 aux:char;
 ok:boolean;
procedure QuickSort(var A: List; Lo, Hi: Integer);

procedure Sort(l, r: Integer);
var
  i, j: integer;
  x, y: sir;
begin
  i := l; j := r; x := a[(l+r) DIV 2];
  repeat
    while a[i] < x do i := i + 1;
    while x < a[j] do j := j - 1;
    if i <= j then
    begin
      y := a[i]; a[i] := a[j]; a[j] := y;
      i := i + 1; j := j - 1;
    end;
  until i > j;
  if l < j then Sort(l, j);
  if i < r then Sort(i, r);
end;

begin {QuickSort};
  Sort(Lo,Hi);
end;



begin
assign(f,'restante.in');
reset(f);
readln(f,n);
for j:=1 to n do begin
          readln(f,s);
          repeat
          ok:=true;
          for i:=1 to length(s)-1 do
              if s[i]>s[i+1] then begin
                                   aux:=s[i];
                                   s[i]:=s[i+1];
                                   s[i+1]:=aux;
                                   ok:=false;
                                   end;
              until ok;
          v[j]:=s;
          end;
 close(f);
{ repeat
          ok:=true;
          for i:=1 to n-1 do
              if v[i]>v[i+1] then begin
                                   auxs:=v[i];
                                   v[i]:=v[i+1];
                                   v[i+1]:=auxs;
                                   ok:=false;
                                   end;
              until ok;
}
quicksort(v,1,n);
if v[1]<>v[2] then nr:=1
              else nr:=0;
for i:=2 to n-1 do
    if (v[i]<>v[i-1]) and (v[i]<>v[i+1]) then nr:=nr+1;
if (v[n]<>v[n-1]) then nr:=nr+1;

assign(f,'restante.out');
rewrite(f);
write(f,nr);
close(f);
end.