Cod sursa(job #252359)

Utilizator thebest001Neagu Rares Florian thebest001 Data 4 februarie 2009 12:05:41
Problema Ordine Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
//includeuri
#include <stdio.h>

int a[28];
int aa=999,bb=1000;


int main()
{
	freopen("ordine.in","r",stdin);
	freopen("ordine.out","w",stdout);
	char c;
	while (scanf("%c",&c)!=EOF)
	{
		if (c==10) break;
		a[c-'a'+1]++;
		if (c-'a'+1<aa)
			aa=c-'a'+1;
		if (c-'a'+1<bb && aa<c-'a'+1)
			bb=c-'a'+1;
		a[0]++;
	}
	///////////////////////////////////////////////////////////
	int p=(a[0]/2+1),operatie=1;
	int i,k=0,ultima=0;
	while (operatie)
	{
		operatie=0;
		for (i=1;i<=26;i++)
			if (a[i]==p)
		{
				int j;
				printf("%c",i+'a'-1);
				for (j=1;j<=27;j++)
					if (j!=i)
						for (k=1;k<=a[j];k++)
							printf("%c%c",j+'a'-1,i+'a'-1);
				return 0;
		}
		for (i=1;i<=26;i++)
			if (a[i] && i!=ultima)
			{
				printf("%c",i+'a'-1);
				a[i]--;
				a[0]--;
				operatie=1;
				break;
			}
		p=a[0]/2+1;
	}
	return 0;
}