二分答案

然后前缀和+树状数组来判断这个答案是否大于等于数

如果我们对于一个查询,如果小于这个数令为1,大于这个数领为-1

将所有前缀和放在树状数组中,就可以查询所有sum_{l} < sum_{r}的组合

#include <assert.h>
#include <algorithm>
#include <bitset>
#include <climits>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <functional>
#include <iomanip>
#include <iostream>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <vector>
using namespace std;
const int N = 1e5 + 5;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
typedef long long ll; int A[N];
int B[N];
int C[N];
ll tree[N * 2];
int n;
void Add(int pos, int num) {
for (int i = pos; i <= 2 * n; i += i & -i) tree[i] += num;
}
ll Sum(int pos) {
ll ans = 0;
for (int i = pos; i > 0; i -= i & -i) ans += tree[i];
return ans;
} bool solve(int x) {
memset(tree, 0, sizeof(tree));
for (int i = 1; i <= n; ++i) {
if (A[i] >= x)
C[i] = 1;
else
C[i] = -1;
}
ll ans = 0;
Add(n, 1);
for (int i = 1; i <= n; ++i) {
C[i] += C[i - 1];
ans += Sum(C[i] + n);
Add(C[i] + n, 1);
}
// printf("%d\n", ans);
return (ans >= (1ll * n * (n + 1) / 4));
}
int main() {
while (~scanf("%d", &n)) {
for (int i = 1; i <= n; ++i) {
scanf("%d", &A[i]);
B[i] = A[i];
}
sort(B + 1, B + n + 1);
int tot = unique(B + 1, B + n + 1) - B - 1;
int l = 1;
int r = tot; while (l <= r) {
int mid = (l + r) >> 1;
if (solve(B[mid]))
l = mid + 1;
else
r = mid - 1;
}
// for(int i = 1; i <= tot; ++i) printf("%d ", B[i]); printf("\n");
printf("%d\n", B[r]);
}
return 0;
}

最新文章

  1. 机器学习笔记----四大降维方法之PCA(内带python及matlab实现)
  2. Hypernetes简介
  3. 纯CSS实现tooltip提示框,CSS箭头及形状之续篇--给整个tooltip提示框加个边框
  4. BZOJ 3110 树套树 &amp;&amp; 永久化标记
  5. Sql Server数据的加密与解密
  6. [python学习笔记] 开篇
  7. NEERC训练实录
  8. C语言实现过滤ASCII在0~127范围内的字符,并去除重复的字符
  9. Elasticsearch实践(四):IK分词
  10. sys用户的操作
  11. PythonStudy——赋值运算符 Assignment operator
  12. js中遇到的一些方法和函数
  13. 利用Python实现FGO自动战斗脚本,再也不用爆肝啦~
  14. 安装nvm管理不同的node版本
  15. git 管理 Linux 文件系统
  16. javascript 获取元素样式的方法
  17. Java RSA 生成公钥 私钥
  18. Python 中的函数
  19. C# 音频操作系统项目总结
  20. 2018-2019-2 20165332《网络攻防技术》Exp5 MSF基础应用

热门文章

  1. HDU 3047 Zjnu Stadium(带权并查集,难想到)
  2. Activiti6.0 spring5 工作流引擎 java SSM流程审批 项目框架
  3. CSP 试题编号201803-1 Java实现
  4. [iOS]AVSpeechSynthesizer语音合成
  5. shell习题第3题:统计内存大小
  6. jqGrid 分页
  7. filter 图片滤镜的各种设置
  8. mongo数据集合属性中存在点号(.)
  9. urllib库使用方法 4 create headers
  10. SSM-CRUD入门项目——删除