Cod sursa(job #569649)

Utilizator borsoszalanBorsos Zalan borsoszalan Data 1 aprilie 2011 21:55:19
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<iostream>
#include<string>

using namespace std;

char S[1000005];

int cate[26];

int main()
{
    freopen("ordine.in","r",stdin);
    freopen("ordine.out","w",stdout);    
    scanf("%s",&S);    
    int n=strlen(S);    
    for(int i=0;i<n;++i)
       ++cate[S[i]-'a'];
    int total=n;
    int last=767;
    while(total)
    {   
        int trb=0;
        
        for(int i=0;i<26;++i)
           if(cate[i]>(total-cate[i]))
           {
               printf("%c",i+'a');
               last=i;
               --cate[i];
               --total;
               trb=1;
               break;
           }         
        if(!trb)        
        for(int i=0;i<26;++i)
           if(cate[i] && i!=last)
           {
               printf("%c",i+'a');
               last=i;
               --cate[i];
               --total;
               break;
           }
    }       
    return 0;
}