Cod sursa(job #126430)

Utilizator juniorOvidiu Rosca junior Data 22 ianuarie 2008 03:46:39
Problema Restante Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.16 kb
var
	fi, fo : text;
  n, i, j, originale : longint;
  c : array[0..36001] of string[16];
  mc : array[#96..'z',1..36000] of string[16];
  nc : array[#96..'z'] of integer;
  car : char;
  l : byte;
begin
	assign(fi,'restante.in'); reset(fi);
  assign(fo,'restante.out'); rewrite(fo);
  read(fi,n);
  for i := 1 to n do	
  	begin
    	readln(fi,c[i]);
      for j := length(c) to 16 do
      	c[i] := #96+c[i]; { caracterul mai mic decat 'a' }
    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
      		inc(nc[c[i][l]]); { Creste numarul de cuvinte corespunzator literei l. }
          mc[c[i][l],nc[c[i][l]]] := c[i];
        end;
      i := 0;
      for car := #96 to 'z' do
      	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(originale);  	
  close(fi); close(fo);
end.