蓝桥杯ALGO-1,区间k大数查询

#include<stdio.h>

int devide(long a[],int low,int high){
long key=a[high];
while(low<high){
while(low<high&&a[low]>key){
low++;
}
if(low<high)
a[high--]=a[low];
while(low<high&&a[high]<key){
high--;
}
if(low<high)
a[low++]=a[high];
}
a[high]=key;
return high;
}

void sort(long a[],int low,int high){
if(low>high){
return ;
}
int j;
j=devide(a,low,high);
sort(a,low,j-1);
sort(a,j+1,high);
}

int main(){
int n,i,j;
long a[1000],b[1000];
int m;
int l,r,k;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%ld",&a[i]);
}
scanf("%d",&m);
for(i=0;i<m;i++){
for(j=0;j<n;j++){
b[j]=a[j];
}
scanf("%d%d%d",&l,&r,&k);
sort(b,l-1,r-1);
printf("%d\n",b[l+k-2]);
}
return 0;

}

时间: 2024-11-17 08:10:56

蓝桥杯ALGO-1,区间k大数查询的相关文章

蓝桥杯--算法训练 区间k大数查询

算法训练 区间k大数查询 时间限制:1.0s   内存限制:256.0MB 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. 第二行包含n个正整数,表示给定的序列. 第三个包含一个正整数m,表示询问个数. 接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个.序列元素从1开始标号. 输出格式 总共输出m行,每行一个数,表示询问的答案. 样例输入 51 2 3 4 521 5

1501130926-蓝桥杯- 算法训练 区间k大数查询

算法训练 区间k大数查询 时间限制:1.0s   内存限制:256.0MB 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. 第二行包含n个正整数,表示给定的序列. 第三个包含一个正整数m,表示询问个数. 接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个.序列元素从1开始标号. 输出格式 总共输出m行,每行一个数,表示询问的答案. 样例输入 5 1 2 3 4 5 2 1

[ALGO-1] 区间k大数查询

算法训练 区间k大数查询 时间限制:1.0s   内存限制:256.0MB 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. 第二行包含n个正整数,表示给定的序列. 第三个包含一个正整数m,表示询问个数. 接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个.序列元素从1开始标号. 输出格式 总共输出m行,每行一个数,表示询问的答案. 样例输入 5 1 2 3 4 5 2 1

区间k大数查询

import java.util.*; import java.io.*; public class 区间k大数查询 { public static void main(String[] args){ Scanner in=new Scanner(new BufferedInputStream(System.in)); int n = in.nextInt(); int[] num = new int[n]; for (int i = 0; i < n; i++) { num[i] = in.n

算法训练——区间K大数查询

//区间K大数查询 #include<stdio.h> int main(){ int n,m,l,r,k,index = 0; scanf("%d",&n); int a[n]; for(int i=1;i<=n;i++) scanf("%d",&a[i]); scanf("%d",&m); while(m--){ int b[n]; scanf("%d%d%d",&l,&a

C语言 &#183; 区间K大数查询

问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. 第二行包含n个正整数,表示给定的序列. 第三个包含一个正整数m,表示询问个数. 接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个.序列元素从1开始标号. 输出格式 总共输出m行,每行一个数,表示询问的答案. 样例输入 51 2 3 4 521 5 22 3 2 样例输出 42 数据规模与约定 对于30%的数据,n,m<=1

算法笔记_079:蓝桥杯练习 区间k大数查询(Java)

目录 1 问题描述 2 解决方案   1 问题描述 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. 第二行包含n个正整数,表示给定的序列. 第三个包含一个正整数m,表示询问个数. 接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个.序列元素从1开始标号. 输出格式 总共输出m行,每行一个数,表示询问的答案. 样例输入 51 2 3 4 521 5 22 3 2 样例输出

蓝桥 算法训练 区间k大数查询

问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. 第二行包含n个正整数,表示给定的序列. 第三个包含一个正整数m,表示询问个数. 接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个.序列元素从1开始标号. 输出格式 总共输出m行,每行一个数,表示询问的答案. 样例输入 51 2 3 4 521 5 22 3 2 样例输出 42 数据规模与约定 对于30%的数据,n,m<=1

算法训练 区间k大数查询

时间限制:1.0s   内存限制:256.0MB 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. 第二行包含n个正整数,表示给定的序列. 第三个包含一个正整数m,表示询问个数. 接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个.序列元素从1开始标号. 输出格式 总共输出m行,每行一个数,表示询问的答案. 样例输入 51 2 3 4 521 5 22 3 2 样例输出 4