思想
求数组l-r位置上的数中第k大的值
我们可以对数组进行排序,但是由于会有多次查询,因此我们可以通过一个额外的vector容器进行存储,顺便用一个sort函数对容器进行排序,输出容器中的size()-k位置的数即可(PS:虽然考察的是)
示例代码
#include<bits\stdc++.h>
using namespace std;
int main(){
int n,m,i,l,r,k;
int num[1005];
vector<int> map;
vector<int> res;
cin >> n;
for(i=0;i<n;i++){
cin >> num[i];
}
cin >> m;
while(m--){
cin >> l >> r >> k;
for(i=l-1;i<r;i++){
map.push_back(num[i]);
}
sort(map.begin(),map.end());
res.push_back(map[map.size()-k]);
map.clear();
}
for(i=0;i<res.size();i++){
cout << res[i] << endl;
}
return 0;
}