Cod sursa(job #956545)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 3 iunie 2013 12:48:40
Problema Ordine Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include<cstdio>
#include<cstring>
int i,n,x[27],j,k,l;
char s[1000002],o,t[1000002];
int main()
{freopen("ordine.in","r",stdin),
freopen("ordine.out","w",stdout),
gets(s),n=strlen(s);
for(i=0;s[i];i++)
     x[s[i]-'a']++;
for(i=0;i<26;i++)
for(j=0;j<x[i];j++)
     s[k++]=i+'a';
t[0]=s[0],x[s[0]-'a']--;
for(i=1;s[i];i++)
     {for(k=-1,j=0;j<26;j++)
     if(x[j]>(n-i)/2)
           k=j;
     if(k>-1)
           t[i]=k+'a',x[k]--;
     else
           for(j=l=0;l<26&&!j;l++)
           if(t[i-1]!=l+'a'&&x[l]>0)
                 j=1,t[i]=l+'a',x[l]--;}
puts(t);  
return 0;}