Cod sursa(job #251775)

Utilizator thebest001Neagu Rares Florian thebest001 Data 3 februarie 2009 13:11:43
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <stdio.h>
#include <string.h>

int main()
{
	freopen("ordine.in","r",stdin);
	freopen("ordine.out","w",stdout);
	char c;
	long a[28]={0};
	while (scanf("%c",&c)!=EOF)
		a[c-'a'+1]++;
	int aa=1,bb=2,i;
	for (i=1;i<=27;i++) if (a[i]) {aa=i;break;}
	for (i=aa+1;i<=27;i++) if (a[i]){bb=i;break;}
	int aux;
	while (a[aa] && aa <=27 && bb<=27)
	{
		for (i=1;i<=(a[aa]<a[bb]?a[aa]:a[bb]);i++)
			printf("%c%c",aa+'a'-1,bb+'a'-1);
		i--;
		a[aa]-=i;a[bb]-=i;
		if (!a[bb]) {for (;(a[bb]<=0) || (aa==bb);bb++);if (aa>bb){aux=aa;aa=bb;bb=aux;}} else
		if (!a[aa]) {aa=bb;for (bb=aa+1;!a[bb];bb++);if (aa>bb){aux=aa;aa=bb;bb=aux;}};
	}
	for (i=1;i<=27;i++)
		if (a[i])
			printf("%c",i+'a'-1);
	return 0;
}