Cod sursa(job #204742)

Utilizator mordredSimionescu Andrei mordred Data 26 august 2008 18:51:55
Problema Ordine Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <stdio.h>
#include <string.h>

int n,a[32],i,x,y,prev,out;
char text[1000002],output[1000002];
int search(int x){
for(i=1;i<=26;++i) if(a[i]==x) return i; return 0;    
}
int search2(int x){
for(i=1;i<=26;++i) if(a[i]&&x!=i) return i; return 0;
}

int main(){
 freopen("ordine.in","r",stdin);
 freopen("ordine.out","w",stdout);
 
 scanf("%s",text);
 
 for(i=0;i<strlen(text);++i){
 ++a[text[i]-'a'+1];}
 
 n = strlen(text+1);
 while(x<=n)
    {
    y = search((n-x+1)/2+1);
    if(!y) y = search2(prev);
    output[out++] = y+'a'-1;
    ++x;--a[y];
    prev = y;
    }

 printf("%s\n",output);
 
 return 0;
}