Cod sursa(job #133849)

Utilizator radu_voroneanuVoroneanu Radu Stefan radu_voroneanu Data 9 februarie 2008 21:08:09
Problema Ordine Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.87 kb
const ceva:char=chr(ord('z')+1);

var a:array['a'..chr(ord('z')+1)] of longint;
    f,g:text;
    ant,c,d:char;
    i,n:longint;

begin
 assign(f,'ordine.in'); reset(f);
 assign(g,'ordine.out'); rewrite(g);
 while not(eoln(f)) do begin
  read(f,c);
  inc(a[c]);
  inc(n);
 end;
 for c:='a' to ceva do
  if a[c]=n div 2+1 then
   break;
 if c=ceva then begin
  ant:='!';
  for i:=1 to n do begin
   for c:='a' to ceva do
    if a[c]>=(n-i+1) div 2+1 then
     break;
   if c=ceva then
    for c:='a' to 'z' do
     if (a[c]<>0) and (ant<>c) then
      break;
   dec(a[c]);
   ant:=c;
   write(g,c);
  end;
  writeln(g);
 end
 else begin
  write(g,c);
  for d:='a' to chr(ord(c)-1) do
   for i:=1 to a[d] do
    write(g,d,c);
  for d:=chr(ord(c)+1) to 'z' do
   for i:=1 to a[d] do
    write(g,d,c);
  writeln(g);
 end;
 close(f); close(g);
end.