小红的牌顺序也是能动的,只是找到小苯能得到最高分的情况。
找到小红卡牌最小值mn并求出小苯卡牌里大于mn数的数量,就可以用排列组合求出大于mn卡牌的排列总数和小于mn卡牌的排列总数(大于mn的排前面);
两者相加为答案



#include<bits/stdc++.h>
usingnamespacestd;
 
intmain()
{
    int t;
    cin>>t;
    while(t--){
        intn,mn=5e5,x=0,y=0;
        cin>>n;
        vector<int>a(n);
        for(inti=0;i<n;i++){
            cin>>a[i];
        }
  
        for(int i=0;i<n;i++){
             int b;
            cin>>b;
            mn=min(mn,b);
        }
        sort(a.begin(),a.end(),greater<int>());
        for(int i=0;i<n;i++){
            if(a[i]>mn){
                x++;
            }
            else{
                y++;
            }
        }
            longlongans=1;
            for(int i=1;i<=x;i++){
               ans=(ans*i)%998244353;
               }
            for(int i=1;i<=y;i++){
                  ans=(ans*i)%998244353;
                 }
            cout<<ans<<endl;
        }
     
}