P1309 瑞士轮这题这个程序只能得90分,为什么?求助!谢谢!
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const int N = 2 * 1e5 + 10;
int n, r, Q;
int s[N],w[N],q[N],q0[N],q1[N];
int cmp(int a,int b){
if(s[a] != s[b]) return s[a] > s[b];
else return a < b;
}
int main(){
cin>>n>>r>>Q
for (int i=1;i<=n*2;i++)cin>>s[i];
for (int i=1;i<=n*2;i++)cin>>w[i];
for (int i=1;i<=n*2;i++) q[i]=i;
sort(q + 1, q + n * 2 + 1, cmp);
while (r -- ){
int x = 1, y = 1;
for(int i = 1;i<= n * 2;i += 2){
int a = q[i], b = q[i + 1];
if(w[a]>w[b]){
s[a] ++;
q1[x ++] = a;
q0[y ++] = b;
}
if(w[b]>w[a]){
s[b] ++;
q1[x ++] = b;
q0[y ++] = a;
}
}
int i = 1, j = 1, k = 1;
while (i <= x && j <= y){
if (cmp(q1[i], q0[j])) q[k ++] = q1[i ++];
else q[k ++] = q0[j ++];
}
while (i <= x) q[k ++] = q1[i ++];
while (j <= y) q[k ++] = q0[j ++];
}
cout<<q[Q];
}