64,653
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
const int maxn=1010;
int find(unsigned int seq[],int l,int r)
{
if(l==r) return l;
int i=l,j=r;
int x=seq[i];
while(i<j)
{
while(i<j&&seq[i]>=x)
{
j--;
seq[i]=seq[j];
}
while(i<j&&seq[i]<=x)
{
i++;
seq[j]=seq[i];
}
}
seq[i]=x;
return i;
}
int find1(unsigned int seq[],int l,int r,int k)
{ if(l>=r)\
return seq[l];
int q=find(seq,l,r);
if(q==k-1)
return seq[q];
else if(q>k-1)
return find1(seq,l,q-1,k);
else
return find1(seq,q+1,r,k);
}
int main()
{
int i,n,m;
int l,r,k;
unsigned int seq[maxn];
unsigned int sort_seq[maxn];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&seq[i]);
}
scanf("%d",&m);
for(i=0;i<m;i++)
{
scanf("%d%d%d",&l,&r,&k);
int d=0,j;
for(j=l-1;j<r;j++,d++)
sort_seq[d]=seq[j];
printf("%d\n",find1(sort_seq,0,d-1,d-k+1));
}
return 0;
}