洛谷P1309 [NOIP2011 普及组] 瑞士轮

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
#include<iostream>
#include<queue>
#include<stack>
#include<vector>
using namespace std;
struct mem
{
    int s;
    int p;
    int k;
};
mem a[200000];
void mergesort(mem *a,int l,int n)
{
    if (l == n) return;
    int mid = (n + l) / 2;
    mergesort(a, l, mid);
    mergesort(a, mid + 1, n);
    int i = l, j = mid + 1;
    mem* t = new mem[n+1];
    int k = 0;
    while (i <= mid && j <= n)
    {
        if (a[i].s < a[j].s)
        {
            t[k++] = a[j++];
        }
        else if (a[i].s > a[j].s)
        {
            t[k++] = a[i++];
        }
        else
        {
            if (a[i].p < a[j].p)
            {
                t[k++] = a[i++];
            }
            else t[k++] = a[j++];
        }
    }
    while (i <= mid)
    {
        t[k++] = a[i++];
    }
    while (j <= n) t[k++] = a[j++];
    k = 0;
    for (int i = l; i <= n;i++)
    {
        a[i] = t[k];
        k++;
    }
    delete[]t;
    return;
}
int main()
{
    int n, r, q;
    cin >> n >> r >> q;
    for (int i = 0; i < 2*n; i++)
    {
        cin >> a[i].s;
        a[i].p = i;
    }
    for (int i = 0; i < 2 * n; i++)
    {
        cin >> a[i].k;
    }
    mergesort(a, 0, 2*n-1);
    for (int i = 0; i < r; i++)
    {
        for (int i = 0; i < 2*n-1; i+=2)
        {
            if (a[i].k < a[i + 1].k) a[i+1].s++;
            else a[i].s++;
        }
        mergesort(a, 0, 2 * n - 1);
    }
    cout << a[q + 1].p;
    return 0;
}

我知道我的代码会超时,但是答案也错了,我不知道问题处在哪,望解答!

能把问题再说的具体一点吗