题目描述
给定一个长度为 NN 的非负整数序列 AA,对于前奇数项求中位数。
输入格式
第一行一个正整数 NN。
第二行 NN 个正整数 A_{1\dots N}A1…N。
输出格式
共 \lfloor \frac{N + 1}2\rfloor⌊2N+1⌋ 行,第 ii 行为 A_{1\dots 2i - 1}A1…2i−1 的中位数。
输入输出样例
输入 #1复制
7 1 3 5 7 9 11 6
输出 #1复制
1 3 5 6
说明/提示
对于 20\%20% 的数据,N \le 100N≤100;
对于 40\%40% 的数据,N \le 3000N≤3000;
对于 100\%100% 的数据,1 \le N ≤ 1000001≤N≤100000,0 \le A_i \le 10^90≤Ai≤109。
中位数定义:将1组数排好顺序,最中间的数为中位数,如果没有,那中间的两个数的平均数为中位数~
好了,886~
答案:
#include <bits/stdc++.h>
using namespace std;
int n;
vector<int>a;
int main()
{
cin >> n;
for(int i = 1,x ; i <= n ; i++)
{
scanf("%d",&x);
a.insert(upper_bound(a.begin(),a.end(),x),x);
if(i % 2 == 1)
{
printf("%d\n",a[(i - 1) / 2]);
}
}
return 0;
}