Pagini recente » Rezultatele filtrării | Monitorul de evaluare | Rezultatele filtrării | Monitorul de evaluare | Cod sursa (job #140143)
Cod sursa(job #140143)
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.