General
 
 
# Author Problem Lang Verdict Time Memory Sent Judged  
188380881 Practice:
DaiRuiChen007
1526D - 16 C++14 (GCC 6-32) Accepted 373 ms 4156 KB 2023-01-08 07:44:17 2023-01-08 07:44:17
→ Source
// LUOGU_RID: 99008589
#include<bits/stdc++.h> 
#define int long long
#define pci pair<char,int>
using namespace std;
const int MAXN=1e5+1;
struct BitTree {
	int len,tree[MAXN];
	inline int lowbit(int x) { return x&-x; }
	inline void Modify(int x,int v) {
		for(;x<=len;x+=lowbit(x)) tree[x]+=v;
	}
	inline int Query(int x) {
		int ret=0;
		for(;x;x-=lowbit(x)) ret+=tree[x];
		return ret;
	}
}	B;
inline int dist(string ori,string tar) {
	int n=tar.size(),ans=0;
	B.len=n;
	ori="#"+ori,tar="#"+tar;
	map <char,vector <int> > lst;
	for(int i=1;i<=n;++i) lst[ori[i]].push_back(i);
	for(int i=1;i<=n;++i) B.Modify(i,1);
	for(int i=n;i>=1;--i) {
		int x=lst[tar[i]].back();
		ans+=B.Query(n)-B.Query(x);
		B.Modify(x,-1),lst[tar[i]].pop_back();
	}
	return ans;
}
inline void solve() {
	string str,res;
	int ans=0;
	cin>>str;
	map <char,int> cnt;
	int n=str.length();
	for(int i=0;i<n;++i) ++cnt[str[i]];
	vector <int> p; vector <pci> sec;
	for(int i=0;i<(int)cnt.size();++i) p.push_back(i);
	for(auto x:cnt) sec.push_back(x);
	do {
		string tmp;
		for(int i:p) {
			for(int j=1;j<=sec[i].second;++j) {
				tmp.push_back(sec[i].first);
			}
		}
		int val=dist(tmp,str);
		if(val>=ans) ans=val,res=tmp;
		
	} while(next_permutation(p.begin(),p.end()));
	cout<<res<<endl;
}
signed main() {
	int T;
	cin>>T;
	while(T--) solve();
	return 0;
}
?
Time: ? ms, memory: ? KB
Verdict: ?
Input
?
Participant's output
?
Jury's answer
?
Checker comment
?
Diagnostics
?
Click to see test details