Cod sursa(job #229761)

Utilizator cotofanaCotofana Cristian cotofana Data 11 decembrie 2008 14:02:05
Problema Ordine Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <stdio.h>
#include <string.h>
#define dim 1000000

void insert_char(char *str, char ch, int pos)
{
	int len=strlen(str), i;
	for (i=len+1; i>pos; i++) str[i]=str[i-1];
	str[pos]=ch;
}

char str[dim];
int nr[26]={0};
long n;

int main()
{
	long i, x, j;
	int ok;
	freopen("ordine.in", "r", stdin);
	freopen("ordine.out", "w", stdout);
	gets(str);
	n=strlen(str);
	for (i=0; i<n; i++) nr[str[i]-'a']++;
	for (i=0; i<n; i++)
	{
		ok=0;
		x=-1;
		for (j=0; j<26 && !ok; j++)
			if (nr[j])
			{
				if (i%2==0)
					if (nr[j]==(n-i-1)/2+1)
					{
						ok=1;
						x=j;
					}
				if (x==-1)
					if (str[i-1]!=j+'a') x=j;
			}
		str[i]='a'+x;
		nr[x]--;
	}
	puts(str);
	return 0;
}