Cod sursa(job #488114)

Utilizator teapatester teapa Data 27 septembrie 2010 18:13:28
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.57 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];++i)
		if (s[i]>='a' && s[i]<='z') len=i,apar[s[i]-'a']++;
	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;
}