/ SeriousOJ /

Record Detail

Wrong Answer


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 532.0 KiB
#2 Wrong Answer 5ms 564.0 KiB
#3 Wrong Answer 5ms 532.0 KiB

Code

#include <bits/stdc++.h>
using namespace std;
#define ll long long

int main() {
   ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int tc; cin >> tc;
    while(tc--){
        string s, t; cin >> s;
        int n = s.size();
        t = s;
        sort(s.begin(), s.end());
    // cout << s << '\n';
        map<char,int>mp;
        int mx = 0;
        for(auto u : s){
            mp[u]++;
            mx = max(mx, mp[u]);
        }
        string ans = "";
        if(mx > (n - mx) + 1) cout << "-1\n";
        else{
            bool vis[n];
        memset(vis, false, sizeof vis);
        int i = 0, j = i + mp[s[0]];
        char tmp = 'A';
        int koita = 0;
        bool ok = true;
        while(8){
            if(j == s.size()) {
                if(!vis[i])
               { int q = i;
                while(s[q] == s[i]){
                    koita++;
                    q++;
                }
                tmp = s[i];}
                break;
            }
            if(!vis[i]) {
                if(s[i] == s[j]) {
                    int q = i;
                while(s[q] == s[i]){
                    koita++;
                    q++;
                }
                tmp = s[i];
                break;
                }
                if(s[i] == ans.back())
                {ans += s[j];
                ans += s[i];}
                else{
                    ans += s[i];
                    ans += s[j];
                }
                vis[j] = true;
                vis[i] = true;
                i++;
                j++;

            }
            else{
                i = j;
                while(s[i] == s[j] && j < s.size()) j++;
                if(s[i] == s[j] || j == n){
                    int q = i;
                while(s[q] == s[i] && q < s.size()){
                    koita++;
                    q++;
                }
                    tmp = s[i]; ok = false; break;}
                if(s[i] == ans.back())
                {ans += s[j];
                ans += s[i];}
                else{
                    ans += s[i];
                    ans += s[j];
                }
                vis[i] = true;
                vis[j] = true;
                i++;
                j++;
            }
        }
     //   cout << tmp << ' ' << koita << ' ';
        if(tmp != 'A'){
            string nw = "";
            int m = ans.size();
            //cout << ans << ' ';
            if(ans.back() != tmp){
                koita--;
                nw += tmp;
            }
            for(int i = m - 1; i >= 0; i--){
                if(ans[i] != tmp && koita > 0){
                    if(i > 0 && ans[i - 1] != tmp){
                        koita--;
                        nw += ans[i];
                        nw += tmp;
                    }
                    else if(i == 0){
                        koita--;
                        nw += ans[i];
                        nw += tmp;
                    }
                    else{
                        nw += ans[i];
                    }
                    
                }
                else
                nw += ans[i];
            }
            //if(m == 0) nw += tmp;
            reverse(nw.begin(), nw.end()) ;
            cout << nw << '\n';
        }
        else
        cout << ans << '\n';
        }
        s.clear();
        
    }
    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:28:43
Judged At
2025-07-14 16:28:43
Judged By
Score
0
Total Time
5ms
Peak Memory
564.0 KiB