这题rall然后用back和pop_back属实是秀翻我了,以及后面是left和right计数也是点睛之笔
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
#define fir first
#define sec second
#define ot(x) cout<<x<<endl;
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
int ans,cnt,m,n,t,tt,k;
int mod=1e9+7;
const int N = 1e7;
//int a[N];
//int b[N],dp[2000][2000];
string s,ss,str;
int read(){
int x=0,f=1;
char c=getchar();
while(c<'0'||c>'9'){if(c=='-') f=-1;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
return x*f;
}
void solve(){
cin>>n>>m>>k>>s>>ss;
string c="";
int left=0,right=0;
sort(rall(s));
sort(rall(ss));
while(s.size()&&ss.size()){
if(s.back()<ss.back()&&left!=k){
c+=s.back();
s.pop_back();
left++;
right=0;
}else if(s.back()>ss.back()&&right!=k){
c+=ss.back();
ss.pop_back();
right++;
left=0;
}else if(left==k){
c+=ss.back();
ss.pop_back();
right++;
left=0;
}else{
c+=s.back();
s.pop_back();
left++;
right=0;
}
}
cout<<c<<endl;
}
int main() {
int t = 1;cin >> t;while (t--){solve();}
return 0;
}