Cod sursa(job #312763)

Utilizator klamathixMihai Calancea klamathix Data 6 mai 2009 21:49:32
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include<cstdio>
#include<cstring>

#define MAXN 1 << 20
#define Alpha 27

int i , j , N , A[Alpha] , first , second;
char string[MAXN];

int main()
{
    freopen("ordine.in","r",stdin);
    freopen("ordine.out","w",stdout);
    
    scanf("%s",&string);
    
    N = strlen ( string )  ;
    
    for ( i = 0 ; i < N ; i++)
        A[int(string[i]) - 96] += 1;
        
    
    for( first = 1 ; A[first] <= 0 ; first ++);
    for( second = first + 1; A[second] <= 0 ; second++);

    
    while ( N > N % 2)
    {
          while ( A[first] && A[second] ) 
          {
                printf("%c%c",char(first + 96),char(second + 96));
                N -= 2;
                A[first] -- ; A[second] --;
          }
          
          if(!A[first])
                       for(first = second + 1; A[first] <= 0 && first <= 26 ;first++);
          
          if(!A[second])
                        while(A[second] == 0 || second <= first )
                                        second ++;
    }

    if( N )
        for( i = 1 ; i <= 27 ; i++)
             if( A[i] )
             {
                  printf("%c\n",char(i + 96));
                  return 0;
             }

return 0;
}