Cod sursa(job #305826)

Utilizator frozen62iceBLue FirE frozen62ice Data 18 aprilie 2009 17:37:29
Problema Ordine Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.04 kb
var c,cc,lc,nc:char;
    f,g:text;
    i:longint;
    a:array['a'..'z'] of longint;
begin
assign(f,'ordine.in');reset(f);
assign(g,'ordine.out');rewrite(g);
while not eof(f) do begin
 while not eoln(f) do begin
  read(f,c);
  inc(a[c]);
 end;
 readln(f);
end;
cc:='a';
while (ord(cc)<=ord('z'))and(a[cc]=0) do cc:=chr(ord(cc)+1);
nc:=chr(ord(cc)+1);
while (ord(nc)<=ord('z'))and(a[nc]=0) do nc:=chr(ord(nc)+1);
if a[cc]<a[nc] then lc:=nc
 else lc:=cc;
while (ord(nc)<=ord('z'))and(ord(cc)<=ord('z')) do begin
 if a[cc]<a[nc] then begin
  for i:=1 to a[cc] do begin
   write(g,cc);
   write(g,nc);
  end;
  dec(a[nc],a[cc]);
  a[cc]:=0;
  lc:=nc;
  cc:=nc;
  nc:=chr(ord(cc)+1);
  while (ord(nc)<=ord('z'))and(a[nc]=0) do nc:=chr(ord(nc)+1);
 end
  else begin
   for i:=1 to a[cc] do begin
    write(g,nc);
    write(g,cc);
   end;
   dec(a[cc],a[nc]);
   a[nc]:=0;
   lc:=nc;
   nc:=chr(ord(cc)+1);
   while (ord(nc)<=ord('z'))and(a[nc]=0) do nc:=chr(ord(nc)+1);
  end;
end;
writeln(g);
close(f);
close(g);
end.