记录编号 |
544375 |
评测结果 |
A |
题目名称 |
动态NTZ |
最终得分 |
100 |
用户昵称 |
瑆の時間~無盡輪迴·林蔭 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.000 s |
提交时间 |
2019-10-18 09:52:17 |
内存使用 |
0.00 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
priority_queue<int> Q1,Q2;//Q1大根堆在上,Q2小根堆在下
void Clear(priority_queue<int>& q)
{
priority_queue<int> e;
swap(q,e);
}
int T,ans[10001],cnt,n,val,tel;
int LINYIN()
{
freopen("running_ntz.in","r",stdin);
freopen("running_ntz.out","w",stdout);
scanf("%d",&T);
while(T--)
{
scanf("%d",&tel);
cnt=0;
memset(ans,0,sizeof(ans));
Clear(Q1);
Clear(Q2);
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&val);
if(!Q2.size()||-val<Q2.top())
{
Q2.push(-val);
}
else
Q1.push(val);
while(Q1.size()>Q2.size()+1)
{
int kel=Q1.top();
Q1.pop();
Q2.push(-kel);
}
while(Q2.size()>Q1.size()+1)
{
int kel=Q2.top();
kel=-kel;
Q2.pop();
Q1.push(kel);
}
if(i%2==1)
{
int td;
if(Q1.size()>Q2.size())
{
td=Q1.top();
}
else
td=-Q2.top();
ans[++cnt]=td;
}
}
cout<<tel<<' '<<cnt<<endl;
for(int i=1;i<=cnt;i++)
{
cout<<ans[i]<<' ';
if((i+10)%10==0)
cout<<endl;
}
cout<<endl;
}
return 0;
}
int LWH=LINYIN();
int main()
{
;
}