侧边栏壁纸
  • 累计撰写 192 篇文章
  • 累计创建 2 个标签
  • 累计收到 87 条评论

【题解】【比赛】区间k大数查询

Allen Best
2023-07-19 / 0 评论 / 0 点赞 / 54 阅读 / 478 字
温馨提示:
本文最后更新于 2023-07-19,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

解析:此题模拟就可以,注意对L-R区间元素排序时,需要先将区间元素从新存入数组,对新数组排序,另外需要注意题目描述:每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个。

#include <iostream>
#include <algorithm>
using namespace std;
int arr[1001], brr[1001];
 
bool cmp(int a, int b) {
	return a > b;
}
int main() {
	int n, m;
	int l, r, k;
	int i, j;
	
	while(cin >> n) {
		for (i=0; i<n; i++)
			cin >> arr[i];
		cin >> m;
		while(m--) {
			cin >> l >> r >> k;
			for (j=l-1,i=0; j<r; j++,i++)
				brr[i] = arr[j];
			sort(brr,brr+i,cmp);
			cout << brr[k-1] << endl;
		}
	}
	return 0;
}

0

评论区