#include<iostream>
#include <cmath>
#include <string>
using namespace std;
int partion(int a[],int left,int right){
int k=a[left];
int i=left,j=right;
while (i<=j)
{
while (i<=j&&a[i]>=k){i++;}
while (j>=i&&a[j]<=k){j--;}
if (i<j)
{
swap(a[i],a[j]);
i++;j--;
}
if (i>j)
{
swap(a[left],a[j]);
return j;
}
}
}
int Sort(int a[],int left,int right,int k){
int j=partion(a,left,right);
if (j==k)
{
return a[j];
}else if(j<k){
Sort(a,j+1,right,k);
}else if(j>k){
Sort(a,left,j-1,k);
}
}
int main()
{
int n,m,l,r,k,s; cin>>n;
int a[1001],b[1001];
for (int i=1;i<=n;i++)
{
cin>>a[i];
}
cin>>m;
while(m--){
cin>>l>>r>>k;
s=r-l+1;
for (int i=1;i<=s;i++)
{
b[i]=a[i+l-1];
}
cout<<Sort(b,1,s,k)<<endl;
}
return 0;
}
蓝桥杯 算法训练 区间k大数查询
最新推荐文章于 2022-03-22 21:03:41 发布