Cod sursa(job #163479)

Utilizator ciprianfFarcasanu Alexandru Ciprian ciprianf Data 22 martie 2008 13:10:07
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.54 kb
#include <stdio.h>
#include <string.h>
int main(){
	int w[30]={0},i=0,j,l,min,last=-1,ok=0;
	char c[1000000];
	freopen("ordine.in","r",stdin);
	freopen("ordine.out","w",stdout);
	scanf("%s",c);
	l=strlen(c);
	for(i=0;i<l;i++)
		w[(int)(c[i]-97)]++;
	for(i=1;i<=l;i++){
		min=0;
		ok=0;
		for(j=0;j<=25;j++){
			if((l-i+1)/2+1==w[j]) min=j;
			if(w[j] && j!=last && ok==0) { last=j; ok=1; }
		}
		if(min==0){
			printf("%c",last+97);
			w[last]--;
		}
		else {
			printf("%c",min+97);
			w[min]--;
			last=min;
		}
	}
	return 0;
}