/ SeriousOJ /

Record Detail

Accepted


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 532.0 KiB
#2 Accepted 1ms 532.0 KiB
#3 Accepted 2ms 532.0 KiB
#4 Accepted 3ms 532.0 KiB
#5 Accepted 3ms 320.0 KiB
#6 Accepted 3ms 344.0 KiB
#7 Accepted 2ms 344.0 KiB
#8 Accepted 3ms 532.0 KiB
#9 Accepted 3ms 536.0 KiB
#10 Accepted 9ms 580.0 KiB
#11 Accepted 8ms 348.0 KiB
#12 Accepted 8ms 324.0 KiB
#13 Accepted 10ms 568.0 KiB
#14 Accepted 6ms 560.0 KiB
#15 Accepted 2ms 532.0 KiB

Code

/*
 * Author: Md. Mahfuzur Rahman
 * Purpose: Competitive Programming
 */

#include <iostream>
#include <cstdio>
#include <string>
#include <vector>
#include <list>
#include <deque>
#include <array>
#include <map>
#include <set>
#include <unordered_map>
#include <unordered_set>
#include <queue>
#include <stack>
#include <algorithm>
#include <numeric>
#include <cmath>
#include <utility>
#include <tuple>
#include <limits>
#include <functional>
#include <chrono>
#include <random>
#include <bitset>
#include <iomanip>
using namespace std;

#define ll long long
 #define pb push_back
 #define endl '\n'
 #define nl cout << endl
 #define ff first
 #define ss second
 #define all(v) v.begin(), v.end()
 #define rall(v) v.rbegin(), v.rend()
 #define srt(v) sort(v.begin(),v.end())
 #define vii vector<int>
 #define vll vector<long long>
 #define pii pair<int, int>
 #define pll pair<long,long>
 #define FAST_IO ios::sync_with_stdio(0); cin.tie(0); cout.tie(0)
 #define minheap priority_queue<long long, vector<long long>, greater<long long>>
 #define maxheap priority_queue<long long, vector<long long>>
const int MAX = 1e6;
const ll MOD = 1e9+7;
 
 ll mx(map<char,ll>&mp)
 {
    ll val=0;
    for(auto x:mp)
    {
        val=max(val,x.ss);
    }
    return val;
 }
 void solve()
 {  
    string s;cin>>s;
    ll n=s.size();
    map<char,ll>mp;

    for(auto x:s)mp[x]++;

    if(mx(mp)>(n+1)/2){
        cout<<-1<<endl;
        return;
    }
    string ans="";
    char last='#';

    for(ll i=0;i<n;i++)
    {
        ll det=0;

        for(char x='a';x<='z';x++)
        {
            if(mp[x]>0)
            {
                if(x!=last)
                {
                    mp[x]--;
                    if(mx(mp)<=(n-(i+1)+1)/2){
                        last=x;
                        det=1;  
                        ans+=last;
                        break;
                    }
                    else{
                        mp[x]++;
                    }
                }
            }
        }
        if(!det){
            cout<<-1<<endl;
        }
    }
    cout<<ans<<endl;


 }

int main()
{
    ios::sync_with_stdio(0); cin.tie(0);  
    
    ll t;          
    cin>>t;
    while(t--)
    {
      solve();
    }    
    
    
}

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 17:07:42
Judged At
2025-07-14 17:07:42
Judged By
Score
100
Total Time
10ms
Peak Memory
580.0 KiB