Cod sursa(job #185557)

Utilizator AlxCojocaru Alexandru Alx Data 25 aprilie 2008 17:34:20
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <stdio.h>
int a[26],p1,poz,max,n;
char s[1000001],x;
int main()
{
    freopen("ordine.in","r",stdin);
    freopen("ordine.out","w",stdout);
    while (1)
    {
        scanf("%c",&x);
        if (x=='\n')
            break;
        a[x-'a']++;
        if (x-'a'>max)
            max=x-'a';
        n++;
    }
    int i,j;
    for (i=0;i<n;i++)
    {
        for (j=0;j<26;j++)
            if (a[j]&&(i==0||'a'+j!=s[i-1]))
            {
                p1=j;
                break;
            }
        for (j=p1;j<26;j++)
            if (a[j]>(n-i)/2)
            {
                p1=j;
                break;
            }
        s[i]='a'+p1;
        a[p1]--;
    }
    s[n]=NULL;
    printf("%s\n",s);
    return 0;
}