Cod sursa(job #134841)

Utilizator crawlerPuni Andrei Paul crawler Data 12 februarie 2008 14:15:51
Problema Ordine Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<cstdio>
#include<string>

using namespace std;

char c[1000007];
int f[128],n,cnt;

int main()
{
    freopen("ordine.in","r",stdin);
    freopen("ordine.out","w",stdout);
    #define int char
    scanf("%s", c);
    
    for (int i=0;i<strlen(c);++i)
    ++f[c[i]];
    int lst;
    cnt=n=strlen(c);
    lst=0;
    while(cnt--)
    {
        //printf("%d\n",(cnt+1)/2+1);        
        int lol=0;        
        for(int i='a';i<='z';++i)
        if ((i^lst)&&(f[i]==((cnt+1)/2+1)))            
        {
        lol=i;
        break;
        }
        if(lol)
        {
          printf("%c", lol);
          --f[lol];
          lst=lol;
          //printf(" lol");
        }
        else
        for (int i='a';i<='z';++i)
        if((i^lst)&&(f[i]))
        {
          printf("%c", i);
          --f[i];
          lst=i;
          break;
        }       
        //printf("\n");
    }
    
    return 0;    
}