Cod sursa(job #576830)
#include<stdio.h>
#include<string.h>
FILE*fin,*fout;
int n,i,fr[256],max,l,ok;
char ch,s[1000001],chp,min;
int main(){
fin=fopen("ordine.in","r");
fout=fopen("ordine.out","w");
fscanf(fin,"%s",s);
n=strlen(s);if(s[n-1]=='\n'){s[n-1]=0;n--;}
for(i=0;i<n;i++){
fr[s[i]]++;
}
chp=0;l=n;
for(i=1;i<=n;i++){ok=1;
for(ch='a';ch<='z';ch++){
if(fr[ch]>l/2){
fprintf(fout,"%c",ch);
fr[ch]--;
chp=ch;ok=0;break;
}
}
if(ok==1){
for(ch='a';ch<='z';ch++){
if(ch!=chp&&fr[ch]>0){chp=ch;fprintf(fout,"%c",ch);fr[ch]--;break;}
}
}
l--;
}
return 0;}