Cod sursa(job #163465)

Utilizator andrei-alphaAndrei-Bogdan Antonescu andrei-alpha Data 22 martie 2008 12:34:10
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <stdio.h>
#define N 1000010
char sol[N],e;
int f[26],l;
void scan() {
	freopen("ordine.in", "r",stdin);
	freopen("ordine.out", "w",stdout);
	for(l=0;;++l,e='\0')
	{
		scanf("%c", &e);
		if(e=='\0')
			break;
		++f[e];
	}	
	sol[0]='X';
}	
int gaseste_char(int i) {
	int min,g=0;
	for(int 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)
				return j; 
		}
		return min;
}		
void solve() {
	int x;
	for(int i=1;i<=l;++i) {
		x=gaseste_char(i);
		--f[x];
		sol[i]=x;
	}	
}	
void print() {
	for(int i=1;i<=l;++i)
		printf("%c", sol[i]);
}	
int main() {
	scan();
	solve();
	print();
	return 0;
}