NC214362. 第k小
描述
输入描述
第一行有三个整数,n m k,(1≤n,m,k≤2e5)第二行包含 n 个整数 a[i] ( 0 ≤ a[i] ≤ 1e9)接下来m行,每行代表一个操作。具体见题目描述
输出描述
每次查询输出一个第 k 小的数。
示例1
输入:
5 4 3 1 2 3 4 5 2 1 1 1 3 2
输出:
3 2
C++ 解法, 执行用时: 235ms, 内存消耗: 5148K, 提交时间: 2022-06-29 21:34:22
#include<bits/stdc++.h> using namespace std; int main() { priority_queue<int>q; int n,m,k,x,y; cin>>n>>m>>k; while(n--) cin>>x,q.push(x); while(m--) { while(q.size()>k) q.pop(); cin>>x; if(x&1) cin>>y,q.push(y); else { if(q.size()<k) cout<<"-1\n"; else cout<<q.top()<<'\n'; } } return 0; }
C++(g++ 7.5.0) 解法, 执行用时: 234ms, 内存消耗: 5128K, 提交时间: 2023-01-12 23:27:47
#include<bits/stdc++.h> std::priority_queue<int>q; int n, m, k,x,y,i; int main(){ for(std::cin >> n >> m >> k,i=0;i<n;++i)std::cin >> x, q.push(x); while (m--){ while (q.size() > k)q.pop(); std::cin >> x; if (x==1)std::cin >> y, q.push(y); else q.size() < k?std::cout << "-1\n":std::cout << q.top() << '\n'; } }