Cod sursa(job #112308)

Utilizator MarquiseMarquise Marquise Data 4 decembrie 2007 13:46:08
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 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)>0)
	{
		if ( c == ' ' || c=='\n')
			break;
		f[c-'a']++;
		n++;

	}
	//if (c == '\n') 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;
}