Cod sursa(job #485623)

Utilizator Teodor94Teodor Plop Teodor94 Data 18 septembrie 2010 21:57:08
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<cstdio>

const int N=1<<20;

char s[N];
int nr,fr[31];

void citire()
{
	gets(s);
	for (int i=0;s[i];++i)
		if (s[i]>='a' && s[i]<='z')
		{
			nr=i;
			fr[s[i]-'a'+1]++;
		}
}

void rez()
{
	int last=-1,k;
	for (int i=0;i<=nr;++i)
	{
		k=0;
		for (int j=1;j<27;++j)
			if (fr[j]==(nr-i+1)/2+1 && j!=last)
				k=j;
		if (k!=0)
		{
			printf("%c",'a'+k-1);
			fr[k]--;
			last=k;
		}
		else
		{
			for (int j=1;j<27;++j)
				if (fr[j] && j!=last)
				{
					printf("%c",'a'+j-1);
					fr[j]--;
					last=j;
					break;
				}
		}
	}
	printf("\n");
}

int main()
{
	freopen("ordine.in","r",stdin);
	freopen("ordine.out","w",stdout);
	citire();
	rez();
	return 0;
}