Cod sursa(job #145882)
var v:array['a'..'z'] of longint;
f,g:text;
nr,nru,k,i:longint;c,d,e:char;
function caut(c:char):char;
begin
while v[c]=0 do inc(c);
caut:=c;end;
begin
assign(f,'ordine.in');reset(f);
assign(g,'ordine.out');rewrite(g);
while not eoln(f) do
begin
read(f,c); inc(nr);
inc(v[c]);
end;
c:='z';while v[c]=0 do
dec(c);
nru:=v[c];k:=0;
d:=caut('a');
e:=caut(succ(d)) ;if nru*2>nr then write(g,c) else
while nr-k>nru*2+1 do
begin
if (v[d]>0) and (v[e]>0) then begin
write(g,d,e);
dec(v[d]);dec(v[e]);inc(k,2);end
else if v[e]=0 then e:=caut(succ(e))
else begin
d:=e;
e:=succ(e);
end;
end;
begin
for i:=1 to v[d] do begin
write(g,d,c);
end;
while (v[e]<>0)and (e<>c) do
begin
write(g,e,c);dec(v[e]);
if v[e]=0 then e:=caut(succ(e));
end;
end;
close(g);end.