神奇的操作 [vector、二分]
来源:互联网 发布:网络黄金egd还有希望吗 编辑:程序博客网 时间:2024/06/07 12:02
Description
有Q次操作,分两类:
1 x —— 向集合(可能会有相同元素)里面插入元素x。
2 y —— 查询集合里面第y大的元素。
Input
第一行输入一个整数t,代表有t组测试数据(t <= 10)
每组数据第一行输出一个整数Q,代表操作次数。
保证:1 <= Q <= 100000,且所有元素均在int范围内。
Output
对出现的第二个操作输出一个整数,代表结果,如果集合里面元素个数小于y,输出-1
Sample Input
2
2
1 2
2 2
3
1 1
1 3
2 2
Sample Output
-1
1
Hint
题意
题解:
第k大 第一个最大
AC代码
#include <cstdio>#include <iostream>#include <queue>#include <map>#include <vector>#include <cmath>#include <set>#include <cstring>#include <algorithm>using namespace std;typedef long long LL;const int N = 5e4+5;const double eps = 1e-4;vector<int > a;set<int > s;int vis[N];int main(){ int t; scanf("%d",&t); while (t--){ a.clear(); int q; scanf("%d",&q); int x,y; for (int i = 1; i <= q; ++i){ scanf("%d%d",&x,&y); if (x==1){ if (a.empty()) a.push_back(y); else { if (y>=a[a.size()-1]) a.push_back(y); else{ int ans = lower_bound(a.begin(),a.end(),y)-a.begin(); a.insert(a.begin()+ans,y); } } } else { if (a.size()<y) printf("-1\n"); else { printf("%d\n",a[a.size()-y]); } } } } return 0;}
阅读全文
0 0
- 神奇的操作 [vector、二分]
- 【HPU】神奇的操作 【vector +二分 】
- 神奇的二分
- 一道神奇的二分题
- vector的二分查找
- 神奇的数组操作
- 神奇的位操作符
- 网络流的神奇操作
- 【hpuoj 1400 神奇的操作 】
- vector对象的操作
- vector操作的习题
- vector的下标操作
- vector的一些操作
- vector的插入操作
- vector的基本操作
- vector的sort操作
- vector的常用操作
- 二分图神奇讲解
- ExtJs教程
- No signature of method: static org.gradle.api.java.archives.Manifest.srcFile() is applicable for arg
- WatchOS系统开发大全(3)-创建第一个WatchApp工程
- Qt笔记-TabWidget
- 关于file文件,通过file文件对图片进行操作
- 神奇的操作 [vector、二分]
- 排序算法小结(python 实现)
- zoj1655(最短路)
- NYOJ1058 部分和问题
- spring常用注解(未完待续)
- 仿IOS样式对话框
- 关于雅克比矩阵与黑塞矩阵
- Interger
- 谷歌研究发现优秀的团队必须具备这五个关键特质