Cod sursa(job #109422)

Utilizator alexrusuRusu Alexandru alexrusu Data 25 noiembrie 2007 11:01:52
Problema Ordine Scor 10
Compilator fpc Status done
Runda preONI 2008, Runda 1, Clasele 5-8 Marime 0.81 kb
program ordine;
var c:char;
    s,sn:string;
    v:array['a'..'z'] of longint;
    f,g:text;
    lg,i,k:longint;
begin
  assign(f,'ordine.in');
  assign(g,'ordine.out');
  reset(f);
  rewrite(g);
  readln(f,s);
  lg:=length(s);
  sn:='';
  for i:=1 to lg do
    v[s[i]]:=v[s[i]]+1;
  k:=1;
  while lg>=1 do
    begin
      c:='a';
      while (c<='z') and (v[c]=0) or ((k>0) and (sn[k-1]=c)) do
        c:=succ(c);
      if (c>'z')and(k>2) then
        begin
          sn:=sn+sn[k-1];
          sn[k-1]:=sn[k-2];
          sn[k-2]:=sn[k];
          v[sn[k-1]]:=v[sn[k-1]]-1;
          lg:=lg-1;
          k:=k+1;
        end
       else
       begin
        sn:=sn+c;
        v[c]:=v[c]-1;
        lg:=lg-1;
        k:=k+1;
       end;
    end;
  writeln(g,sn);
  close(f);
  close(g);
end.