Cod sursa(job #1752456)

Utilizator silkMarin Dragos silk Data 3 septembrie 2016 23:29:40
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <cstdio>
#include <cstring>
#define NMax 1000001

char s[NMax+1];
int v[27];

int main(){
    freopen("ordine.in","r",stdin);
    freopen("ordine.out","w",stdout);

    int lg,i,j,now,sum,ok;

    fgets(s,NMax,stdin);
    lg = strlen(s);
    if( s[lg-1]=='\n' ) --lg;
    for(i = 0; i < lg; ++i) ++v[ s[i]-'a' ];

    now = -1; sum = lg;
    for(i = 0; i < lg; ++i)
    {
        ok = 1;
        for(j = 0; j < 26; ++j)
        if( v[j] == sum-v[j]+1 && j != now )
        {
            printf("%c", 'a'+j );
            --v[j];
            --sum;
            now = j;
            ok = 0;
            break;
        }

        if(ok)
        for(j = 0; j < 26; ++j )
        if( v[j] && j != now )
        {
            printf("%c", 'a'+j );
            --v[j];
            --sum;
            now = j;
            break;
        }
    }



return 0;
}