问题描述
给定一个序列,问每个序列中第L个数字到第R个数字中哪个数字最大。
输入格式
第一行包含数字n,表示序列长度。
第二行包含代表给定序列的n个正整数。
第三个包含正整数m,表示查询次数。
下面的m行,每一行有三个数字l,r,K r,K,表示查询序列中从左到右从l数到r数哪个数字从大到小最大。序列元素从1开始编号。
output format
总共输出m行,每行一个数字,表示查询的答案。
样本输入
5
1 2 3 4 5
2
1 5 2
2 3 2
样本输出
4
2
数据比例和惯例
为30%数据,n,m=100
对于100%数据,n,m=1000
保证k<=(r-l+1),序列中的数<=106。
#include using namespace std;bool cmp(int a, int b) { return a > b;}int main() { int n, m; int l, r, k; int i, j; int nums[1005]; int temp[1005]; scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%d",&nums[i]); } scanf("%d", &m); while(m--) { scanf("%d%d%d", &l, &r, &k); for (i = 0, j = l; j <= r; i++, j++) { temp[i] = nums[j]; } sort(temp, temp + i, cmp); printf("%d", temp[k - 1]); } return 0;}