Cod sursa(job #160089)
#include <stdio.h>
struct ab{
int a,b;
};
int main(){
int w[30]={0},i=0,j,t,poz,k=0;
char x;
ab v[30];
freopen("ordine.in","r",stdin);
freopen("ordine.out","w",stdout);
while(scanf("%c",&x)!=EOF)
w[x-97]++;
for(i=0;i<=25;i++)
if(w[i]) {
v[++k].a=w[i];
v[k].b=i+97;
}
i=1;
j=2;
while(i<=k || j<=k){
//if(i<=k && j<=k) {
while(v[i].a && v[i].b){
printf("%c%c",v[i].b,v[j].b); v[i].a--; v[j].a--;}
//}
//else if(i<=k) { printf("%c",v[i].b); v[i].a--; }
//else if(j<=k) { printf("%c",v[j].b); v[j].a--; }
if(v[i].a==0 && v[j].a==0) { i+=2; j+=2; }
else if(v[i].a==0) i+=2;
else if(v[j].a==0) j++;
}
return 0;
}