社区讨论

蒟蒻求助大佬,报错

P1309[NOIP 2011 普及组] 瑞士轮参与者 3已保存回复 9

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
9 条
当前快照
1 份
快照标识符
@lo88e3dj
此快照首次捕获于
2023/10/27 14:27
2 年前
此快照最后确认于
2023/10/27 14:27
2 年前
查看原帖
CPP
#include <iostream>
#include <cstdio>
#include <bits/stdc++.h>
using namespace std;
int mn=200010;
struct node{
	int num,power,score;
}d[200010],b[200010],c[200010];
int n,r,q;
int cmp(node a,node b){
	if(a.score>b.score) return true;
	if(a.score<b.score) return false;
	if(a.num>b.num) return false;
	return true;
}
void solve(){
	int i=0,j=0,l=-1,k;
	while(1){
		if(i==n/2){
			for(k=j;k<i;k++)
				l++,d[l]=c[k];
			break;
		}
		else{
			if(j==n/2){
				for(k=i;k<j;k++)
					l++,d[l]=b[k];
				break;
			}
			else{
				if(b[i].score<c[j].score || (b[i].score==c[j].score && b[i].num>c[j].num))
					l++;
					d[l]=c[j];
					j++;
			}
			else{
				l++;
				d[l]=b[i];
				i++;
			}
		}
	}
}
int main(){
	cin>>n>>r>>q;
	n*=2;
	for(int i=0;i<n;i++){
		d[i].num=i;
		cin>>d[i].score;
	}
	for(int i=0;i<n;i++) cin>>d[i].power;
	sort(d,d+n,cmp);
	for(int j=1;j<=r;j++){
		for(int i=0;i<n;i+=2){
			int t1=d[i].power,t2=d[i+1].power,t3=i/2;
			if(t1>t2){
				b[t3]=d[i];
				c[t3]=d[i+1];
				b[t3].score++;
			}
			else{
				c[t3]=d[i];
				b[t3]=d[i+1];
				b[t3].score++;
			}
		}
		solve();
	}
	cout<<d[q-1].num+1;
	return 0;
}

老是报错

回复

9 条回复,欢迎继续交流。

正在加载回复...