Pagini recente » Cod sursa (job #2465263) | Cod sursa (job #2193183) | Cod sursa (job #3273464) | Cod sursa (job #1185058) | Cod sursa (job #126688)
Cod sursa(job #126688)
{ }
{ }
const
lim = 36000;
var
fi, fo : text;
n, i, j, originale : longint;
cuv : string[16];
c : array[0..lim+1] of string[16];
mc : array[#96..'z',1..lim] of string[16];
nc, f : array[#96..'z'] of integer;
car, lit : char;
l, k : byte;
begin
assign(fi,'restante.in'); reset(fi);
assign(fo,'restante.out'); rewrite(fo);
readln(fi,n);
for i := 1 to n do
begin
readln(fi,cuv);
l := length(cuv);
for car := 'a' to 'z' do
f[car] := 0; { frecventele literelor din cuvantul curent }
for j := 1 to l do
inc(f[cuv[j]]); { Stabilim frecventele literelor din cuvant. }
fillchar(c[i],16,#96);
k := 16;
for car := 'z' downto 'a' do { Ordonam literele in cuvant. }
for j := 1 to f[car] do
begin
c[i][k] := car; dec(k);
end
end;
for l := 16 downto 1 do { Grupam dupa locul l. }
begin
for car := #96 to 'z' do
nc[car] := 0; { numarul de cuvinte corespunzatoare fiecarui caracter }
for i := 1 to n do
begin
lit := c[i][l];
inc(nc[lit]);{Creste numarul de cuvinte corespunzator literei l. }
mc[lit,nc[lit]] := c[i];
end;
i := 0;
for car := #96 to 'z' do { Culegem cuvintele in vectorul c. }
for j := 1 to nc[car] do
begin
inc(i); c[i] := mc[car,j]
end;
end;
c[0] := ' '; c[n+1] := ' '; { diferite de celelalte }
for i := 1 to n do
if (c[i-1] <> c[i]) and (c[i] <> c[i+1]) then
inc(originale);
writeln(fo,originale);
close(fi); close(fo);
end.