Cod sursa(job #235363)

Utilizator DraStiKDragos Oprica DraStiK Data 23 decembrie 2008 15:47:26
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <stdio.h>
int a[27];
int n,ok,oc;
void check (int val)
{
    int i;
    oc=0;
    for (i=1; i<=26; ++i)
        if (a[i]==(n-val+1)/2+1)
        {
            printf ("%c",i+'a'-1);
            oc=1;
			ok=i;
			--a[i];
            break;
        }
}
void solve ()
{
    int i,j;
    char ch;
    while (scanf ("%c",&ch)!=EOF)
	{
		if (ch=='\n')
			break;
		++a[ch-'a'+1];
		++n;
    }
    for (i=1; i<=n; ++i)
    {
        check (i);
        if (!oc)
        {
            j=1;
            while (j<=26)
            {
                if (a[j] && ok!=j)
                {
                    printf ("%c",j+'a'-1);
                    --a[j];
                    ok=j;
                    break;
                }
                ++j;
            }
        }
    }           
}
int main ()
{
    freopen ("ordine.in","r",stdin);
    freopen ("ordine.out","w",stdout); 
    solve ();
    return 0;   
}