Cod sursa(job #3294509)

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

using namespace std;

int cnt[50];

char pick(char &last, int p) {
    char cc;

    for (int i = 0; i < 26; i++) {
        if (cnt[i] <= 0) continue;
        char c = 'a' + i;

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

    for (int i = 0; i < 26; i++) {
        if (cnt[i] <= 0) continue;
        char c = 'a' + i;

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

    return cc;
}

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    freopen("ordine.in", "r", stdin);
    freopen("ordine.out", "w", stdout);

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

    int n = str.length();
    char prev = '*';
    for (int i = 0; i < n; i++) {
        int p = (n - i) / 2 + 1;

        cout << pick(prev, p);
        // cout << prev << endl;
    }

    return 0;
}