90分求助!在线等待!
查看原帖
90分求助!在线等待!
314625
信息向阳花木楼主2021/8/24 18:17
#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];
}

rt,这个程序只能得90分,(不是伸手党!),在哪有问题?谢谢!

2021/8/24 18:17
加载中...