Cod sursa(job #323717)

Utilizator freak93Adrian Budau freak93 Data 13 iunie 2009 11:15:33
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<cstdio>
#include<cstring>
#define maxn 1000006

using namespace std;

char a[maxn],k,r;

int i,j,n,s[170];

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

    fgets(a,sizeof(a),stdin);

    n=strlen(a);

    for(i=0;i<n;++i)
        ++s[a[i]];

    while(a[n-1]=='\n') --n;

    for(i=0;i<n;++i)
    {
       k=0;

       for(j='a';j<='z';++j)
        if(s[j]&&!k&&j!=r)
            --s[j],k=j;
        else
            if(s[j]==(n-i)/2+1)
                ++s[k],--s[j],k=j,j='z'+1;
        printf("%c",k);
        r=k;
    }

    printf("\n");

    fclose(stdin);
    fclose(stdout);

    return 0;
}