package Main;
import java.util.Scanner;
public class ALGO1 {//区间K大数查询
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); //输入序列长度n
int[] a = new int[n]; //将n个正整数放在数组a里
for(int i=0;i<n;i++) {
a[i] = sc.nextInt();
}
int m = sc.nextInt(); //查询个数m
int[] end = new int[m]; //用来存储需要输出的数值
for(int j=0;j<m;j++) { //键位输入从左往右第l个数到第r个数中,从大往小第K大的数是哪个。
int l = sc.nextInt();
int r = sc.nextInt();
int k = sc.nextInt();
end[j] = exp(a,l,r,k);
}
for(int z=0;z<m;z++) { //最后输出
System.out.print(end[z]);
System.out.println();
}
}
private static int exp(int a[], int l, int r, int k) {
//针对序列a,在l-r区间,第k大的值
int[] array =new int[r-l+1];
int ll = l-1;
for(int i1=0;i1<r-l+1;i1++) { //用来存储l-r区间的数值
array[i1] = a[ll++];
}
int t=0;
for(int i=0;i<r-l+1;i++) { //如果序列是乱序,这里先递增排序并存储
for(int j=0;j<r-l;j++) {
if(array[j]>array[j+1]) {
t = array[j+1];
array[j+1] = array[j];
array[j] = t;
}
}
}
return array[r-l+1-k]; //根据索引号返回需要的第K大的值
}
}
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交