Cod sursa(job #529983)

Utilizator tudorsTudor Siminic tudors Data 6 februarie 2011 17:10:26
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <stdio.h>
#include <string.h>
#define maxim 1000017
using namespace std;
int n,t;
char T[maxim];
int i,l;
int A[26];

int main()
{
	freopen("ordine.in","r",stdin);
	freopen("ordine.out","w",stdout);
	scanf("%s",&T);
	n=strlen(T);
	for (i=0;i<n;++i)
		A[T[i]-'a']++;

	t=n;
	l=767;
	while (t)
	{
		int tr=0;
		for (i=0;i<26;++i)
			if (A[i]>(t-A[i]))
			{
				printf("%c",i+'a');
				l=i;
				A[i]--;
				t--;
				tr=l;
				break;
			}
		if (tr) continue;
		for (i=0;i<26;++i)
			if (A[i] && i!=l)
			{
				printf("%c",i+'a');
				l=i;
				A[i]--;
				t--;
				break;
			}
	}
	return 0;
}