Cod sursa(job #204740)

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

int n,a[32],i,x,y,prev;
char text[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);
    printf("%c",y+'a'-1);
    ++x;--a[y];
    prev = y;
    }
 
 
 return 0;
}