大佬求救!!
查看原帖
大佬求救!!
1022974
Ryan_L_F楼主2025/1/5 15:21

为什么我这个代码卡死了?

#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
struct stu{
    int s, w, id;
}a[N];
int n, T, Q;
bool is_bigger(stu x, stu y){
    if(x.s != y.s)
        return x.s > y.s;
    return x.id < y.id;
}
void mergesort(int l, int r){
    if(l < r){
        int mid = (l + r) / 2;
//        cout << l << " " << mid << " " << r << "\n";
        mergesort(l, mid);
        mergesort(mid + 1, r);
        int i = l, j = mid + 1, k = l;
        stu b[N];
        memcpy(b, a, sizeof a);
        while(i <= mid && j <= r){
            if(is_bigger(b[i], b[j]))
                a[k] = b[i ++];
            else
                a[k] = b[j ++];
            k ++;
        }
        while(i <= mid)
            a[k ++] = b[i ++];
        while(j <= r)
            a[k ++] = b[j ++];
    }
}

int main(){
    cin >> n >> T >> Q;
    n *= 2;
    for(int i = 1; i <= n; i++)
        cin >> a[i].s, a[i].id = i;
    for(int i = 1; i <= n; i++)
        cin >> a[i].w;
//    cout << 1;
    mergesort(1, n);
//    cout << 2;
    while(T --){
        for(int i = 1; i <= n; i += 2){
            if(a[i].w < a[i + 1].w)
                a[i + 1].s ++;
            else
                a[i].s ++;
        }
        mergesort(1, n);
    }
    cout << a[Q].id << "\n";
    return 0;
}
2025/1/5 15:21
加载中...