Cod sursa(job #163456)

Utilizator andrei-alphaAndrei-Bogdan Antonescu andrei-alpha Data 22 martie 2008 12:00:16
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <stdio.h>
#include <string.h>
#define J 50
#define N 1000010
char v[N],sol[N];
int f[N];
int l;
void scan() {
	freopen("ordine.in", "r",stdin);
	freopen("ordine.out", "w",stdout);
	scanf("%s\n", v);
	l=strlen(v);
	for(int i=0;i<l;++i)
		++f[v[i]];
	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;
}