Cod sursa(job #2019655)

Utilizator MoodyFaresFares Mohamad MoodyFares Data 8 septembrie 2017 11:32:33
Problema Ordine Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <cstdio>
#include <cstring>

int f['z' + 5];

int main() {
  freopen ("ordine.in", "r", stdin);
  freopen ("ordine.out", "w", stdout);

  char s[1000001];
  scanf("%s", s);
  int N = (int) strlen(s);
  for (int i = 0; i < N; i++) {
    f[s[i]]++;
  }
  char last = 'a' - 1;
  for (int i = 0; i < N; i++) {
    char ch;
    bool sePoate = false;
    for (ch = 'a'; ch <= 'z'; ch++) {
      if (ch != last && f[ch] == (N - i) / 2 + 1) {
        sePoate = true;
        break;
      }
    }
    if (!sePoate) {
      for (ch = 'a'; ch <= 'z'; ch++) {
        if (ch != last && f[ch] != 0) {
          break;
        }
      }
    }
    printf("%c", ch);
    f[ch]--;
    last = ch;
  }
  printf("\n");
  return 0;
}