Cod sursa(job #488111)

Utilizator teapatester teapa Data 27 septembrie 2010 18:08:04
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.54 kb
#include<cstdio>
const int N=1<<20;
char s[N];
int len,apar[31];
int main()
{
	freopen("ordine.in","r",stdin);
	freopen("ordine.out","w",stdout);
	gets(s);
	int i,ant=666,k;
	for (i=0;s[i]>='a';++i) apar[s[i]-'a']++;
	len=i;
	for (int i=0;i<=len;++i)
	{
		k=0;
		for (int j=0;j<26;++j) if (apar[j]==(len-i+1)/2+1 && j!=ant) k=j;
		if (k!=0)
		{
			printf("%c",'a'+k);
			apar[k]--, ant=k;
		}
		else
			for (int j=0;j<26;++j)
				if (apar[j] && j!=ant)
				{
					printf("%c",'a'+j);
					apar[j]--,ant=j;
					break;
				}
	}
	printf("\n");	
	return 0;
}