xQAQyn @ 2019-04-26 20:28:06
#include<bits/stdc++.h>
using namespace std;
priority_queue<int> a;
priority_queue<int,vector<int>,greater<int> > b;
int main()
{
int n;
int kkk;
scanf("%d%d",&n,&kkk);
a.push(kkk);
cout<<kkk;
for(int i = 1;i < n;i++)
{
scanf("%d",&kkk);
if(kkk > a.top())
b.push(kkk);
else a.push(kkk);
if(i % 2 == 0)
{
while(abs(a.size() - b.size())>1)
{
if(a.size()>b.size())
{
b.push(a.top());
a.pop();
}
else
{
a.push(b.top());
b.pop();
}
}
if(a.size() > b.size())
cout<<endl<<a.top();
else
cout<<endl<<b.top();
}
}
return 0;
}
by _Misaka_Mikoto @ 2019-04-26 20:34:09
https://www.luogu.org/recordnew/show/18554418
查了你的编译记录 是因为头文件导致的abs歧义
你自己定义一个abs 名字改成ccf_abs之类的 不重复
by _Misaka_Mikoto @ 2019-04-26 20:34:48
我只是很好奇你是不看编译错误还是看不懂?不应该啊
by 0AND1STORY @ 2019-04-26 21:01:22
强制转换一下类型应该就行了,编译错误里写的找不到abs
函数的priority_queue<int>::size_type
类型的函数重载,把a.size() - b.size()
改成int(a.size()-b.size())
应该就行了
by xQAQyn @ 2019-04-27 12:37:49
@Xeon 是真没看懂为什么错了,因为我自己看到题解第一篇大佬写得和我差不多[捂脸]。。。。。
by xQAQyn @ 2019-04-27 12:45:06
我自己在本地跑一点问题都没有