当前位置:网站首页>POJ - 3784 running medium
POJ - 3784 running medium
2022-07-07 08:31:00 【WA_ automata】
POJ - 3784 Running Median( To the top pile )
Description
For this problem, you will write a program that reads in a sequence of 32-bit signed integers. After each odd-indexed value is read, output the median (middle value) of the elements received so far.
Input
The first line of input contains a single integer P, (1 ≤ P ≤ 1000), which is the number of data sets that follow. The first line of each data set contains the data set number, followed by a space, followed by an odd decimal integer M, (1 ≤ M ≤ 9999), giving the total number of signed integers to be processed. The remaining line(s) in the dataset consists of the values, 10 per line, separated by a single space. The last line in the dataset may contain less than 10 values.
Output
For each data set the first line of output contains the data set number, a single space and the number of medians output (which should be one-half the number of input values plus one). The output medians will be on the following lines, 10 per line separated by a single space. The last line may have less than 10 elements, but at least 1 element. There should be no blank lines in the output.
Sample Input
3
1 9
1 2 3 4 5 6 7 8 9
2 9
9 8 7 6 5 4 3 2 1
3 23
23 41 13 22 -3 24 -31 -11 -8 -7
3 5 103 211 -311 -45 -67 -73 -81 -99
-33 24 56
Sample Output
1 5
1 2 3 4 5
2 5
9 8 7 6 5
3 12
23 23 22 22 13 3 5 5 3 -3
-7 -3
Open two stacks , One is big root pile , One is the small root pile , Then those less than the median are put in the big root pile , Those larger than the median are put in the small root pile , if , The number of a heap is greater than that of the current sequence 1 2 \frac{1}{2} 21, Then move the extra number , Until the number of two heaps is equal .
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
int main()
{
int T;scanf("%d",&T);
while(T--)
{
int m,n;scanf("%d%d",&m,&n);
priority_queue<int> max_heap;
priority_queue<int,vector<int>,greater<int> > min_heap;
printf("%d %d\n",m,(n+1)/2);
int cnt=0;
for(int i=0;i<n;i++)
{
int t;scanf("%d",&t);
max_heap.push(t);
if(min_heap.size() && min_heap.top() < max_heap.top())
{
int a=min_heap.top(),b=max_heap.top();
min_heap.pop(),max_heap.pop();
min_heap.push(b),max_heap.push(a);
}
if(max_heap.size()>min_heap.size()+1)
{
min_heap.push(max_heap.top());
max_heap.pop();
}
if(i%2==0)
{
printf("%d ",max_heap.top());
if(++cnt%10==0) puts("");
}
}
if(cnt%10) puts("");
}
return 0;
}
边栏推荐
- One click deployment of highly available emqx clusters in rainbow
- Splunk查询csv lookup table数据动态查询
- 【无标题】
- [paper reading] icml2020: can autonomous vehicles identify, recover from, and adapt to distribution shifts?
- Using helm to install rainbow in various kubernetes
- Golang 编译约束/条件编译 ( // +build <tags> )
- Are you holding back on the publicity of the salary system for it posts such as testing, development, operation and maintenance?
- Four items that should be included in the management system of integral mall
- opencv学习笔记二——图像基本操作
- Openvscode cloud ide joins rainbow integrated development system
猜你喜欢
随机推荐
Vulnerability recurrence easy_ tornado
Wang Zijian: is the NFT of Tencent magic core worth buying?
在Rainbond中实现数据库结构自动化升级
Exercise arrangement 2.10, 11
Grpc, oauth2, OpenSSL, two-way authentication, one-way authentication and other column directories
SSM 整合
2 - 3 arbre de recherche
利用 Helm 在各类 Kubernetes 中安装 Rainbond
CCTV is so warm-hearted that it teaches you to write HR's favorite resume hand in hand
Iptables' state module (FTP service exercise)
Xcit learning notes
Lua programming learning notes
[IELTS speaking] Anna's oral learning records part2
2-3查找树
rsync远程同步
opencv学习笔记二——图像基本操作
【无标题】
Use of any superclass and generic extension function in kotlin
The single value view in Splunk uses to replace numeric values with text
Improve the delivery efficiency of enterprise products (1) -- one click installation and upgrade of enterprise applications