迷之CE,本地无误
  • 板块P1168 中位数
  • 楼主福明o7
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/3/16 12:18
  • 上次更新2023/10/28 06:28:48
查看原帖
迷之CE,本地无误
566903
福明o7楼主2022/3/16 12:18

代码:

#include<bits/stdc++.h>
#define resh_umbrella return 0 
using namespace std;
int n;
int x;//一个临时读入数据的变量 
priority_queue<int> q1;//大根堆 
priority_queue<int,vector<int>,greater<int> >q2;//小根堆 
int main(){
	scanf("%d",&n);
	scanf("%d",&x);
	printf("%d\n",x);//第一个数据的特判
	q1.push(x);
	for(int i=2;i<=n;i++){//开始遍历 
		scanf("%d",&x);
		if(x>q1.top()){//如果该数据大于大根堆的顶部(即读入了当前的最大值) 
			q2.push(x);//用小根底保留(修复) 
		}
		else{
			q1.push(x);
		}
		while(abs(q1.size()-q2.size())>1){//当两边堆大小基本不对等时(差距大于1时) 
			//进行平衡操作
			if(q1.size()>q2.size()){
				q2.push(q1.top());
				q1.pop();
			} 
			else{
				q1.push(q2.top());
				q2.pop();				
			}
		}
		if(i%2==1){//奇数位输出,偶数位不输出 
			if(q1.size()>q2.size()){
				printf("%d\n",q1.top());
			}
			else{
				printf("%d\n",q2.top());
			}
		}
	}
	resh_umbrella;
}

abs(q1.size()-q2.size())>1这行编译错误,说有歧义? 本地编辑器DEV-C++5.11 运行无误

2022/3/16 12:18
加载中...