Cod sursa(job #281625)
#include<fstream>
using namespace std;
#define INF 0x3F3F3F3F
int frecv[32];
int main(){
char c, ant='A';
int i, st=0, vmax, ivmax;
ifstream f("ordine.in");
ofstream g("ordine.out");
while(f>>c) frecv[c-'a']++, st++;
f.close();
while(st){
vmax=-INF;
for(i=0;i+'a'<='z';i++)
if(vmax<frecv[i])
vmax=frecv[i], ivmax=i;
if(st%2==1&&(st+1)/2==vmax)
{ant=(char)(ivmax+'a');g<<ant;st--;frecv[ivmax]--;}
else{
for(i=0;i+'a'<='z';i++)
if(frecv[i]&&(char)(i+'a')!=ant){
ant=(char)(i+'a');g<<ant;
st--;frecv[i]--;break;
}
}
}
g<<'\n';
g.close();
return 0;
}