115282024-10-19 10:21:24MagyarKendeSZLGVáltakozó (75 pont)cpp17Elfogadva 75/7543ms1308 KiB
#include <bits/stdc++.h>
using namespace std;

bool can_finish(const array<int, 26>& h, int j) {
    int sum = 0, mx = 0, mxi = -1;
    for (int i = 0; i < 26; i++) {
        sum += h[i];
        if (mx < h[i]) {
            mx = h[i];
            mxi = i;
        }
    }
    return mx <= sum / 2 + (sum % 2 != 0 && j != mxi);
}

int main() {
    string s;
    cin >> s;

    array<int, 26> h = {0};
    for (char c : s) h[c - 'a']++;

    string result;
    for (int i = 0; i < s.size(); i++) {
        for (int j = 0; j < 26; j++) {
            h[j]--;
            if (h[j] >= 0 && can_finish(h, j) &&
                (result.empty() || result.back() != j + 'a')) {
                result += j + 'a';
                break;
            }
            h[j]++;
        }
    }

    cout << (result.size() == s.size() ? result : "-1");
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base75/75
1Elfogadva0/01ms320 KiB
2Elfogadva0/01ms320 KiB
3Elfogadva3/31ms500 KiB
4Elfogadva3/31ms320 KiB
5Elfogadva3/31ms400 KiB
6Elfogadva3/31ms320 KiB
7Elfogadva3/33ms320 KiB
8Elfogadva3/319ms1132 KiB
9Elfogadva3/325ms712 KiB
10Elfogadva3/325ms728 KiB
11Elfogadva3/31ms320 KiB
12Elfogadva3/31ms320 KiB
13Elfogadva3/31ms320 KiB
14Elfogadva3/31ms320 KiB
15Elfogadva3/318ms1144 KiB
16Elfogadva3/318ms1308 KiB
17Elfogadva3/325ms1184 KiB
18Elfogadva3/332ms1112 KiB
19Elfogadva3/318ms1240 KiB
20Elfogadva3/317ms1112 KiB
21Elfogadva3/321ms1144 KiB
22Elfogadva6/617ms1252 KiB
23Elfogadva6/619ms1112 KiB
24Elfogadva6/643ms1140 KiB