/ SeriousOJ /

Record Detail

Wrong Answer


  
# Status Time Cost Memory Cost
#1 Wrong Answer 1ms 320.0 KiB
#2 Wrong Answer 2ms 532.0 KiB

Code

#include <iostream>
#include <string>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;

int main() {
    int T;
    cin >> T;
    while (T--) {
        string S;
        cin >> S;
        int n = S.size();
        vector<int> freq(26, 0);

        for (char ch : S) freq[ch - 'a']++;

        int maxFreq = *max_element(freq.begin(), freq.end());
        if (maxFreq > (n + 1) / 2) {
            cout << "-1\n";
            continue;
        }

        priority_queue<pair<char, int>, vector<pair<char, int>>, greater<>> pq;
        for (int i = 0; i < 26; ++i) {
            if (freq[i]) pq.push({char('a' + i), freq[i]});
        }

        string result;
        pair<char, int> prev = {'#', 0};

        while (!pq.empty()) {
            vector<pair<char, int>> buffer;
            bool placed = false;

            while (!pq.empty()) {
                auto [ch, f] = pq.top(); pq.pop();
                if (ch != prev.first) {
                    result += ch;
                    if (f - 1 > 0) buffer.push_back({ch, f - 1});
                    if (prev.second > 0) buffer.push_back(prev);
                    prev = {ch, f - 1};
                    placed = true;
                    break;
                } else {
                    buffer.push_back({ch, f});
                }
            }

            if (!placed) {
                cout << "-1\n";
                goto nextTest;
            }

            for (auto &[ch, f] : buffer) {
                pq.push({ch, f});
            }
        }

        cout << result << "\n";

        nextTest: continue;
    }
    return 0;
}

Information

Submit By
Type
Submission
Problem
P1209 B. Rearrange the String
Contest
Educational Round 1
Language
C++17 (G++ 13.2.0)
Submit At
2025-07-14 16:01:31
Judged At
2025-07-14 16:01:31
Judged By
Score
0
Total Time
2ms
Peak Memory
532.0 KiB