Description
小黑熊的邻居bob 家里种了好多玉米,玉米是排成一条线 ,贪吃的小黑熊想去偷一个玉米,但是bob家的玉米实在是太多了,所以小黑熊决定选择一个区间[l,r]去偷,因为小黑熊的幸运数是k,所以它决定就去偷在它选择的区间里第k大的一个玉米。
现在请你帮助小黑熊计算一下它将偷的玉米有多大吧
Input
第一行包含一个数n(n<=1000),表示玉米的总个数。
第二行包含n个正整数(每个数不超过10的6次方),表示每个玉米的大小。
第三个包含一个正整数m(m<=1000),表示询问个数。
接下来m行,每行三个数l,r,k(k<=(r-l+1)),代表上面的所涉及的元素,表示询问序列从左往右第l个数到第r个数中,从大往小第k大的玉米是哪个。序列元素从1开始标号。
Output
总共输出m行,每行一个数,表示询问的答案。
Sample Input
5 1 2 3 4 5 2 1 5 2 2 3 2
Sample Output
4 2
HINT
AC代码:
#include <iostream> #include <cmath> #include <cstdio> #include <algorithm> #include <cctype> #include <cstdlib> #include <cstring> #define MAXN 1000 using namespace std; int main(){ int n; cin>>n; int a[n],i,m; i=0; while(i<n){ cin>>a[i++]; } cin>>m; int l,r,k,j,t; while(m){ cin>>r>>l>>k; int b[l-r+1]; for(i=r-1,j=0;i<l;j++,i++) b[j]=a[i]; t=l-r+1; sort(b,b+l-r+1); cout<<b[t-k]<<'\12'; m--; } return 0; }
时间: 2024-10-16 05:01:23