Cod sursa(job #2775128)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 14 septembrie 2021 15:45:04
Problema Ordine Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.56 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);
    return 0;
}