Cod sursa(job #331184)

Utilizator zbarniZajzon Barna zbarni Data 12 iulie 2009 23:13:20
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#define nx 1000005
using namespace std;
char a[nx];
int b[50],w,C;
int check (int i,int x)
{
	for (int j=1;j<=26;++j)
	{
		if (b[j] && !w && j!=C) w=j;
		if (b[j]>(x-i)/2+(x-i)%2 && b[j])
			return j;
	}
	return 0;
}
int main()
{
	 freopen("ordine.in","r",stdin);
	 freopen("ordine.out","w",stdout);
	 scanf("%s",&a);int i,x=strlen(a);
	 for ( i=0;i<x;++i)
		 b[a[i]-'a'+1]++;
	 int p;char c;
	 for (i=1;i<=x;++i)
	 {
		 w=0;
		 p=check(i,x);
		 if (!p)
		 {
			c=w+'a'-1;b[w]--;C=c-'a'+1;
			printf("%c",c);
		 }
		 else
		 {
			 c=p+'a'-1;b[p]--;C=c-'a'+1;
			 printf("%c",c);
		 }
	 }
	 printf("\n");
	 return 0;
}