Cod sursa(job #517562)
Utilizator | Data | 29 decembrie 2010 10:55:51 | |
---|---|---|---|
Problema | Ordine | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.57 kb |
#include <stdio.h>
#include <string.h>
char v[1000001];
int l[27],i,j,a,b,n;
int main()
{
freopen("ordine.in","r",stdin);
freopen("ordine.out","w",stdout);
v[0]=' ';
fgets(v+1,1000000,stdin);
n=strlen(v)-2;
for (i=1;i<=n;++i) ++l[v[i]-(int)'a'+1];
for (i=1;i<=n;++i)
{
j=1;
while (!l[j]||(j==a)) ++j;
b=a;
a=j;
for (j=a+1;j<27;++j)
if ((l[j]==(n-i+1)/2+1)&&(j!=b))
a=j;
--l[a];
printf("%c",(char)(a+(int)'a')-1);
}
return 0;
}