給定一個序列,每次詢問序列中第l個數到第r個數中第K大的數是哪一個。ios
第一行包含一個數n,表示序列長度。spa
第二行包含n個正整數,表示給定的序列。排序
第三個包含一個正整數m,表示詢問個數。it
接下來m行,每行三個數l,r,K,表示詢問序列從左往右第l個數到第r個數中,從大往小第K大的數是哪一個。序列元素從1開始標號。io
對於30%的數據,n,m<=100;class
對於100%的數據,n,m<=1000;stream
保證k<=(r-l+1),序列中的數<=106。數據
#include<stdio.h>
#include<iostream>
#include<algorithm>
int a[1000000],b[1000000];
using namespace std;
int main()
{
int n,m,i,j,l,r,k;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&m);
while(m--)
{
scanf("%d%d%d",&l,&r,&k);
int count=0;
for(i=l-1,j=0;i<r;i++,j++)
{
b[j]=a[i];
count++;//記錄一共選取幾個數
}
sort(b,b+count);//將選出來的數進行排序
printf("%d\n",b[count-k]);
}
return 0;
}sort