Cod sursa(job #318941)

Utilizator ooctavTuchila Octavian ooctav Data 29 mai 2009 22:48:02
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
// ordine.cpp : Defines the entry point for the console application.
//

#include <cstdio>
char c[1001001];
char c2[1001001];
int e[30],curent=0,nr=0,t,suma,maxim,p;
int main()
{
	freopen("ordine.in","r",stdin);
	freopen("ordine.out","w",stdout);
	int i,l1=1,l2=2;
	char a;
	fgets(c,100000,stdin);
	for(i=0;c[i] && c[i]!='\n';i++)
		e[c[i]-96]++;
	t=i-1;
	while(nr<t)
	{
		suma=0;maxim=-1,p;
		for(i=(l1<l2?l1:l2);i<=29;i++)
		{
			suma=suma+e[i];
			if(maxim<e[i])
			{
				maxim=e[i];
				p=i;
			}
		}
		if(maxim<=e[i]+1)
			l1<l2?l2:l1=p;
		while(!e[l1])
			l1+1!=l2?l1++:l1=l2+1;
		e[l1]--;
		c2[++nr]=l1+96;
		while(!e[l2])
			l2+1!=l1?l2++:l2=l1+1;
		e[l2]--;
		c2[++nr]=l2+96;
	}
	fwrite(c2+1,t,sizeof(int),stdout);

}