問題描述
給定一個(gè)序列滋将,每次詢問序列中第l個(gè)數(shù)到第r個(gè)數(shù)中第K大的數(shù)是哪個(gè)邻悬。
輸入格式
第一行包含一個(gè)數(shù)n,表示序列長(zhǎng)度随闽。
第二行包含n個(gè)正整數(shù)父丰,表示給定的序列。
第三個(gè)包含一個(gè)正整數(shù)m掘宪,表示詢問個(gè)數(shù)蛾扇。
接下來(lái)m行,每行三個(gè)數(shù)l,r,K魏滚,表示詢問序列從左往右第l個(gè)數(shù)到第r個(gè)數(shù)中屁桑,從大往小第K大的數(shù)是哪個(gè)。序列元素從1開始標(biāo)號(hào)栏赴。
輸出格式
總共輸出m行蘑斧,每行一個(gè)數(shù),表示詢問的答案。
樣例輸入
5
1 2 3 4 5
2
1 5 2
2 3 2
樣例輸出
4
2
數(shù)據(jù)規(guī)模與約定
對(duì)于30%的數(shù)據(jù)竖瘾,n,m<=100沟突;
對(duì)于100%的數(shù)據(jù),n,m<=1000捕传;
保證k<=(r-l+1)惠拭,序列中的數(shù)<=106。
#include <bits/stdc++.h>
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\n", temp[k - 1]);
}
return 0;
}