Cod sursa(job #163051)

Utilizator andrei-alphaAndrei-Bogdan Antonescu andrei-alpha Data 21 martie 2008 10:56:28
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include <stdio.h>
#include <string.h>
#define J 50
#define N 1000010
char v[N],sol[N];
int f[N];
int main()
{
	int min,i,j,g,l;
	freopen("ordine.in", "r",stdin);
	freopen("ordine.out", "w",stdout);
	scanf("%s\n", v);
	l=strlen(v);
	for(i=0;i<l;++i)
		++f[v[i]];
	sol[0]='X';
	for(i=1;i<=l;++i)
	{
		g=0;
		//functie
		for(j='a';j<='z';++j)
		{
			if(f[j]!=0 && !g && j!=sol[i-1])
			{ g=1; min=j; }	
			if(f[j]>(l-i+1)/2)
			{
				sol[i]=j;
				--f[j];
				g=3;
				break;
			}
		}
		if(g!=3)
		{
			sol[i]=min;
			--f[min];
		}	
	}	
	for(i=1;i<=l;++i)
		printf("%c", sol[i]);
	return 0;
}