Cod sursa(job #1481703)
Utilizator | Data | 5 septembrie 2015 06:23:12 | |
---|---|---|---|
Problema | Ordine | Scor | 100 |
Compilator | c | Status | done |
Runda | Arhiva de probleme | Marime | 0.53 kb |
#include<stdio.h>
#include<string.h>
int i,n,x[26],j,k,l;
char s[1000001];
int main() {
freopen("ordine.in","r",stdin),freopen("ordine.out","w",stdout),gets(s),n=strlen(s);
for(i=0;i<n;i++)
x[s[i]-'a']++;
for(i=0;i<n;i++) {
for(k=-1,j=0;j<26;j++)
if(2*x[j]>n-i)
k=j;
if(k>-1)
s[i]=k+'a',x[k]--;
else
for(j=l=0;l<26&&!j;l++)
if(((i&&s[i-1]!=l+'a')||!i)&&x[l])
j=1,s[i]=l+'a',x[l]--;
}
puts(s);
}