Cod sursa(job #2766689)

Utilizator Alex_tz307Lorintz Alexandru Alex_tz307 Data 2 august 2021 21:09:52
Problema Ordine Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("ordine.in");
ofstream fout("ordine.out");

void max_self(int &x, int y) {
  if (x < y)
    x = y;
}

int main() {
  string s;
  fin >> s;
  int n = s.size(), f[26] = {0}, most_freq = 0, ch = -1;
  for (char c : s)
    if (++f[c - 'a'] > n / 2)
      ch = c;
  int last = -1;
  for (int rep = 0; rep < n; ++rep) {
    if (rep % 2 == 0 && ch >= 0) {
      fout << char('a' + ch);
      last = ch;
      continue;
    }
    int best = -1;
    for (int c = 0; c < 26; ++c)
      if (c != last && f[c] > 0) {
        best = c;
        break;
      }
    fout << char('a' + best);
    --f[best];
    last = best;
  }
  fout << '\n';
  fin.close();
  fout.close();
  return 0;
}