70求助!
查看原帖
70求助!
691641
Grow_楼主2023/2/26 09:41
#include <bits/stdc++.h>
using namespace std;
int n,r,q;
struct node{
    int s,w,io;
}x[200005];
bool cmp(node a,node b){
    if(a.s!=b.s)return a.s>b.s;
    else return a.io<b.io;
}
int main(){
    cin >> n >> r >> q;
    for(int i = 1;i<=2*n;i++)cin >> x[i].s;
    for(int i = 1;i<=2*n;i++){
        cin >> x[i].w;
        x[i].io=i;
    }
    sort(x+1,x+2*n+1,cmp);
    while(r--){
        int site1=1,site2=1;
        node a[100005],b[100005];
        for(int i = 1;i<=n;i++){
            if(x[2*i-1].w>x[2*i].w){
                a[i]=x[2*i-1];
                a[i].s++;
                b[i]=x[2*i];
            }
            else{
                a[i]=x[2*i];
                a[i].s++;
                b[i]=x[2*i-1];
            }
        }
        for(int i = 1;i<=2*n;i++){
            if(a[site1].s>b[site2].s) x[i]=a[site1++];
            else if(a[site1].s==b[site2].s&&a[site1].io<b[site2].io)x[i]=a[site1++];
            else x[i]=b[site2++];
        }
    }
    cout << x[q].io;
    return 0;
}
2023/2/26 09:41
加载中...