思路
本来想写数据结构,但看了一眼数据范围,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; }