Cod sursa(job #111736)

Utilizator juniorOvidiu Rosca junior Data 1 decembrie 2007 19:21:30
Problema Ordine Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.06 kb
var
	a : array ['a'..'{'] of longint;  { '{' urmeaza dupa 'z' }
  fi, fo : text;
  nc, i : longint;
  s, d, c, t : char;
function mindif0 (c : char) : char;{cel mai mic caracter care poate fi folosit}
begin
  if c <> '{' then {poate fi adevarata dupa ce s-a afisat ultimul caracter}
    repeat
		  c := succ(c)
    until (a[c] <> 0) or (c = '{');
  mindif0 := c;
end;
begin
	assign(fi,'ordine.in'); reset(fi);
  assign(fo,'ordine.out'); rewrite(fo);
	while not eoln(fi) do
  	begin
  		read(fi,c);
      inc(a[c]);
      inc(nc);
    end;
  s := mindif0 (chr(ord('a')-1)); d := mindif0(s); c := s;
  for i := 1 to nc do
  	begin
      write(fo,c);
      dec(a[c]); {cu un caracter mai putin din acest tip}
    	if a[c] = 0 then
      	if c = s then
        	begin
          	s := d; d := mindif0(d);
            c := s;
          end
        else
        	begin
        		d := mindif0(d);
          	c := s;
          end
      else
      	if c = s then
        	c := d
        else
        	c := s
    end;
  close(fi); close(fo);
end.