Pagini recente » Cod sursa (job #278204) | Cod sursa (job #870649) | Cod sursa (job #2459694) | Cod sursa (job #834926) | Cod sursa (job #187443)
Cod sursa(job #187443)
# include <stdio.h>
# include <string.h>
int Ap[133];
char uc,c,ch,s[1000001];
int k=0,x=0,ok=0;
long i;
int main()
{
freopen("ordine.in","r",stdin);
freopen("ordine.out","w",stdout);
scanf("%s",s);
k=strlen(s);
for(i=0;i<k;++i)
Ap[int(s[i])]=Ap[int(s[i])]+1;
ch='a';
while (!Ap[int(ch)])
ch++;
x=0;
while (x<k){
if (Ap[int(ch)])
{
x++;ok=0;
for (c=ch;c<='z';c++)
if (Ap[int(c)]>=(k-x+1)/2+1) {
ok=1;
break;
}
if (ok) {
printf("%c",c);
Ap[int(c)]--;
uc=c;
}
else {
if (uc!=ch) {
printf("%c",ch);
Ap[int(ch)]--;
uc=ch;
}
else {
ok=0;
for (c=ch+1;c<='z';c++)
if (Ap[int(c)]!=0) {
ok=1;
break;
}
if (ok){
printf("%c",c);
uc=c;
Ap[int(c)]--;
}
}
}
} else ch++;
}
printf("\n");
return 0;
}