Cod sursa(job #110734)

Utilizator MarquiseMarquise Marquise Data 27 noiembrie 2007 17:58:41
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <stdio.h>
int f[27], n;

int main()
{
	int i, s, ex = 1, l = 0;
	char c, uc = 0;
	freopen("ordine.in", "r", stdin);
	freopen("ordine.out", "w", stdout);
	while ( scanf("%c", &c)!=EOF )
	{
		f[c-'a']++;
		n++;
	}

	while (ex)
	{
		s = n/2+1;
		for ( i = 0; i <= 25 && !l; i++)
			if ( s == f[i])
				l = i;
		if ( l )
		{
			while ( f[l] )
			{
				printf("%c", l+'a');
				f[l]--;
				i = 0;
				while ( (f[i]==0 || i == l) && i <= 25 )
				i++;
				if ( i <= 25)
				{
					printf("%c", i+'a');
					f[i]--;
				}
			}
			ex = 0;
		}
		else
		{
			i = 0;
			while ( (f[i] == 0 || i+'a'== uc) && i <= 25)
				i++;
			if ( i <=25)
			{
				uc = i + 'a';
				printf("%c", uc);
				f[i]--;
				n--;

			}
			else
				ex = 0;

		}
	}
	return 0;
}