为什么我这个代码卡死了?
#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;
}