题目描述

给出一个长度为NN的非负整数序列A_i,对于所有1 ≤ k ≤ (N + 1) / 21≤k≤(N+1)/2,输出A_1, A_3, …, A_2k - 1的中位数。即前1,3,5,…个数的中位数。

输入格式

第1行为一个正整数N,表示了序列长度。

第2行包含N个非负整数A_i (A_i ≤ 10^9)

输出格式

共(N + 1) / 2(N+1)/2行,第ii行为A_1, A_3, …, A_2k - 1 的中位数。


#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1e5+10;
int a[N],b[N],c[N], n;
bool vis[N];
inline void add(int x,int y){
for(;x<N;x+=x&(-x))c[x]+=y;
}
inline int sum(int x){
int ans=0;
for(;x;x-=x&(-x))ans+=c[x];
return ans;
}
signed main(){
cin>>n;
for(int i=1;i<=n;i++)scanf("%d",&a[i]),b[i]=a[i];
sort(b+1,b+1+n);
for(int i=1;i<=n;i++){
int op=lower_bound(b+1,b+1+n,a[i])-b;
while(vis[op])op++;
vis[op]=1;
a[i]=op;
}
for(int i=1;i<=n;i++){
add(a[i],1);
if(!(i&1))continue;
int l=0,r=n,ans=0;
while(l<=r){
int mid=(l+r)>>1;
if(sum(mid-1)<=sum(n+1)-sum(mid)){
l=mid+1;
ans=mid;
}else r=mid-1;
}
cout<<b[ans]<<endl;
}
}

最新文章

  1. ldap部署相关,ldap双机\LAM配置管理\ldap备份还原
  2. Git 修改源地址
  3. js获取上传文件个数 以及名称
  4. 从零开始系列--R语言基础学习笔记之一 环境搭建
  5. [Java] 两种发起POST请求方法,并接收返回的响应内容的处理方式
  6. [转] Web前端优化之 内容篇
  7. [置顶] JAVA概述(6)常量,关键字,进制转换
  8. 作为.net程序员学jsp,伤不起
  9. Bash : test 命令
  10. CS Round#49 C Max Substring
  11. C# Split 字符文本中的字符太多
  12. [LeetCode] Keyboard Row 键盘行
  13. php 多维数组 array sort 排序 :array_multisort
  14. asp.net mvc Areas 母版页动态获取数据进行渲染
  15. linux文件属性的10个字符各代表什么意思
  16. SQL中not in 和not exists
  17. 【题解】Luogu P3203 [HNOI2010]弹飞绵羊
  18. Hive QL的操作
  19. HDU1370(中国剩余定理)
  20. JVM总结(一):概述--JVM运行时数据区

热门文章

  1. vm虚拟机安装linux centos教程
  2. Magicodes.Pay,打造开箱即用的统一支付库,已提供ABP模块封装
  3. spring security 简单入门
  4. go中的关键字-defer
  5. 0MQ讲述多线程魔法
  6. 微信中使用popup等弹窗组件时点击输入框input键盘弹起导致IOS中按钮无效处理办法
  7. 解决 bash cd too many arguments 报错
  8. 【Luogu P1967】货车运输
  9. mac 安装zmap
  10. theano function参数