Cod sursa(job #109493)

Utilizator ioraIoana Radu iora Data 25 noiembrie 2007 11:23:32
Problema Ordine Scor 0
Compilator cpp Status done
Runda preONI 2008, Runda 1, Clasele 5-8 Marime 0.7 kb
#include<stdio.h>
char c,cc;
long ok,x[100],y[100],f[100],i,t,k,n;
int main()
{
	freopen("ordine.in","r",stdin);
	freopen("ordine.out","w",stdout);
	scanf("%c",&c);
	while(c!='\n')
		{

		 ++f[c-'a'+1];
		 scanf("%c",&c);
		}

	for(i=1;i<=26;++i)
		{
			if(f[i])
			{
				++n;
				x[n]=f[i];
				y[n]=i;
			}
		}

	ok=1;
	cc=' ';
	while(ok)
	{
		k=0;
		t=0;
		for(i=1;i<=n;++i)
			if(x[i]!=0&&(y[i]+'a'-1)!=cc) { k=i; x[i]--;break;}
		if(k==0) break;
		printf("%c",char(y[k]+'a'-1));
		for(i=k+1;i<=n;++i)
			if(x[i]!=0) {t=i; x[i]--;break;}
		if(t!=0)
		{
		cc=char(y[t]+'a'-1);
		printf("%c",char(y[t]+'a'-1));
		}
		else cc=y[k]+'a'-1;
	}

	fcloseall();

	return 0;
}