当时自己犯了很蠢的错误,用Python写一直ac不了,所以搞了两个版本,后来发现都改好了,两个都能AC

C++版本:
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#define MAX(a,b) ((a) > (b) ? (a) : (b))
using namespace std;

int main(){
    int t, res_m, res_f;
    cin >> t;
    for(int i = 0; i < t; i++){
        int n;
        res_m = 0;
        res_f = 0;
        cin >> n;
        vector<int> v;
        for(int j = 0; j < n; j++){
            int x; scanf("%d",&x);
            vector<int>::iterator pos_left,pos_right;
            pos_left = std::lower_bound(v.begin(), v.end(), x);
            pos_right = std::upper_bound(pos_left, v.end(), x);
            int lo = pos_left - v.begin();
            int hi = pos_right - v.begin();
            v.insert(v.begin()+hi, x);
            res_f += lo + hi - j;
            res_m = MAX(res_m, res_f);
        }
        cout << res_m << ' ' << res_f << endl;
    }
    return 0;
}

Python 版本:
import bisect
T = int(input())
class my_class(object):
    __slots__ = ['array', 'res_m', 'res_f']
    def __init__(self, lst):
        array = []
        res_m, res_f = 0, 0
        n = len(lst)
        for i, x in enumerate(lst):
            pos_left = bisect.bisect_left(array, x)
            pos_right = bisect.bisect_right(array, x, pos_left)
            res_f += pos_left + pos_right - i
            res_m = max(res_m, res_f)
            array.insert(pos_right, x)
        print(res_m, res_f)
for _ in range(T):
    n = int(input())
    lst = list(map(int, input().split()))
    my_class(lst)