Cod sursa(job #114346)
#include<stdio.h>
#include<iostream.h>
#define LMAX 60000
/// -97
long v[26],v2[26],n,i,poz=-1,last=-1;
char s;
int cauta()
{int j,var2; long var=(n-i+1)/2+1;
for(j=0;j<last;j++)
if(v2[j]==var && v[j]>0) {v2[j]++; v[j]--; return j;}
for(j=last+1;j<26;j++)
if(v2[j]==var && v[j]>0) {v2[j]++; v[j]--; return j;}
for(j=0;j<26;j++) if(v[j]>0 && j!=last) {v2[j]++; v[j]--; return j;}
}
main()
{freopen("ordine.in","r",stdin);
freopen("ordine.out","w",stdout);
while(!feof(stdin)) {s=fgetc(stdin); v[s-97]++; n++;} n--;
for(i=1;i<=n;i++)
{last=cauta(); printf("%c",last+97);}
}