思路

本来想写数据结构,但看了一眼数据范围,10e3,暴力过就行了。
b数组用来存储该区间从大到小排列后的数据,第k大的数就是l+k-1。
时间复杂度:询问m,排序nlogn

代码

#include<bits/stdc++.h>
using namespace std;

int n,m,l,r,k,a[1005],b[1005];

bool cmp(int x,int y){
    return x>y;
}

int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++) scanf("%d",&a[i]);
    scanf("%d",&m);
    for(int i=1;i<=m;i++){
        scanf("%d%d%d",&l,&r,&k);
        for(int i=l;i<=r;i++)    b[i]=a[i];
        sort(b+l,b+r+1,cmp);
        cout<<b[l+k-1]<<endl;
    }
    return 0;
}