Cod sursa(job #3294504)

Utilizator nwtkNi Ba Kia nwtk Data 24 aprilie 2025 19:46:20
Problema Ordine Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<bits/stdc++.h>

using namespace std;

int cnt[50];

char pick(string r, int p) {
    int last = r[r.length() - 1];
    char cc;

    for (int i = 0; i < 26; i++) {
        char c = 'a' + i;

        if (cnt[i] > 0 && cnt[i] >= p && c != last) {
            cnt[i]--;
            return c;
        }
    }

    for (int i = 0; i < 26; i++) {
        char c = 'a' + i;

        if (cnt[i] > 0 && c != last) {
            cnt[i]--;
            cc = c;
            break;
        }
    }

    return cc;
}

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

    string str;
    cin >> str;
    for (char c: str) {
        cnt[c - 'a']++;
    }

    int n = str.length();
    string res = "";
    for (int i = 0; i < n; i++) {
        int p = (n - i) / 2 + 1;
        char c = pick(res, p);

        res += c;
    }

    cout << res;

    return 0;
}