Wrong Answer
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