Cod sursa(job #793151)

Utilizator visanrVisan Radu visanr Data 1 octombrie 2012 23:22:37
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;


char s[1000010];
int app[26], lg, L, R;


int main()
{
    freopen("ordine.in", "r", stdin);
    freopen("ordine.out", "w", stdout);
    int i, j;
    gets(s);
    lg = strlen(s);
    for(i = 0; i < lg; i++)
        app[s[i] - 'a'] ++;
    R = L = -1;
    for(i = 0; i < lg; i++)
    {
        j = 0;
        while(app[j] == 0 || j == L) j ++;
        R = L, L = j;
        for(j = L + 1; j < 26; j++)
            if(app[j] == (lg - i) / 2 + 1 && j != R)
                L = j;
        app[L] --;
        printf("%c", L + 'a');
    }
    return 0;
}