Pagini recente » Cod sursa (job #1194320) | Cod sursa (job #87910) | Cod sursa (job #1140411) | Cod sursa (job #2255330) | Cod sursa (job #267982)
Cod sursa(job #267982)
#include<stdio.h>
#include<string.h>
char s[1000001];
int n,fol[30];
int este(int x)
{
for (int i=1;i<=26;i++)
if (fol[i]==(int)((n-x+1)/2)+1)
return i;
return 0;
}
int main()
{
freopen("ordine.in","r",stdin);
freopen("ordine.out","w",stdout);
scanf("%s",&s);
n=strlen(s);
for (int i=0;i<n;i++)
fol[s[i]-'a'+1]++;
int nrc=1,x=1,v;
for (int i=1;i<=26;i++)
{
int ok=0;
if (este(x))
{
v=este(x);
printf("%c",v+'a'-1);
x++;
fol[v]--;
ok=1;
}
if (fol[i]>0)
{
if(v!=i)
{printf("%c",i+'a'-1);
x++;
fol[i]--;
}
nrc=i+1;
while (fol[i]!=0)
{
while ((fol[nrc]==0)&&nrc<26)
nrc++;
printf("%c",nrc+'a'-1);
fol[nrc]--;x++;
if(este(x)) {i--;
break;}
printf("%c",i+'a'-1);
fol[i]--;x++;
}
}
}
printf("\n");
return 0;
}