Cod sursa(job #1281001)

Utilizator cojocarugabiReality cojocarugabi Data 2 decembrie 2014 19:25:48
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.55 kb
# include <bits/stdc++.h>
using namespace std;
ifstream fi("ordine.in");
ofstream fo("ordine.out");
const int nmax = 1e6 + 5;
char c[nmax];
int s[35];
inline char get(char a,int n)
{
    char b;
    for (char i=0;i<26;++i) if (i!=a && s[i]) {b=i;break;}
    for (char i=b+1;i<26;++i) if (a != i && s[i] >=n / 2 + 1) {b=i;break;}
    --s[b];
    return b;
}
int main(void)
{
    fi>>(c+1);
    int n=strlen(c+1),t=30;
    for (int i=1;c[i];++i) ++s[c[i]-'a'];
    for (int i=n;i;--i) fo << char((t=get(t,i))+'a');
    return fo << '\n',0;
}