/ SeriousOJ /

Record Detail

Accepted


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 532.0 KiB
#2 Accepted 2ms 536.0 KiB
#3 Accepted 2ms 536.0 KiB
#4 Accepted 2ms 532.0 KiB
#5 Accepted 2ms 392.0 KiB
#6 Accepted 2ms 764.0 KiB
#7 Accepted 2ms 532.0 KiB
#8 Accepted 2ms 532.0 KiB
#9 Accepted 2ms 484.0 KiB
#10 Accepted 2ms 540.0 KiB
#11 Accepted 2ms 532.0 KiB
#12 Accepted 2ms 488.0 KiB
#13 Accepted 2ms 324.0 KiB
#14 Accepted 2ms 536.0 KiB
#15 Accepted 2ms 328.0 KiB

Code

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

int main() {
  int t;
  cin >> t;
  while (t--){
    string s;
    cin >> s;
    int n = s.size();
    vector<int> a(26);
    for (int i = 0; i < n; i++){
      a[s[i] - 97]++;
    }
    s = "";
    int i = 0;
    while (s.size() < n){
      int k = 0, mx = 0, sum = 0;
      for (int i = 0; i < 26; i++){
        if (mx < a[i]) {
          mx = a[i];
          k = i;
        }
      }
      for (int i = 0; i < 26; i++){
        if (k != i) {
          sum += a[i];
        }
      }
      if (mx > sum){
        s += char(k + 97);
        a[k]--;
      }
      int f = 1;
      for (int j = 0; j < 26; j++){
        if (mx > sum){
          if (!a[j] or j == k) continue;
          s += char(j + 97);
          a[j]--;
          f = 0;
          break;
        }
        if (a[j] && s.empty()){
          s = char(j + 97);
          a[j]--;
          f = 0;
          break;
        }
        if (a[j] && s.back() != char(j + 97)){
          s += char(j + 97);
          a[j]--;
          f = 0;
          break;
        }
      }
      if (f) break;
    }
    if (s.empty() or s.size() != n) s = "-1";
    else if (n > 1 && s[n - 1] == s[n - 2]) s = "-1";
    cout << s << endl;
  }
}

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:15:27
Judged At
2025-07-14 16:15:27
Judged By
Score
100
Total Time
2ms
Peak Memory
764.0 KiB