蓝桥杯 - 区间k大数查询

太过爱你忘了你带给我的痛 2022-06-01 02:35 337阅读 0赞

根据输入的左右区间,放入一个数组,然后进行排序,左位置加上第几位减去1就是这个数字所在的位置

  1. #include<cstdio>
  2. #include<algorithm>
  3. #include<cstring>
  4. using namespace std;
  5. int n, m;
  6. int s[1010], s1[1010];
  7. bool cmp(int a, int b){
  8. return a > b;
  9. }
  10. int main(){
  11. scanf("%d", &n);
  12. for(int i = 1; i <= n; i++){
  13. scanf("%d", &s[i]);
  14. }
  15. scanf("%d", &m);
  16. while(m--){
  17. int l, r, k;
  18. scanf("%d %d %d", &l, &r, &k);
  19. for(int i =l ; i <= r; i++){
  20. s1[i] = s[i];
  21. }
  22. sort(s1+l, s1+r+1, cmp);
  23. printf("%d\n", s1[l+k-1]);
  24. }
  25. return 0;
  26. }

发表评论

表情:
评论列表 (有 0 条评论,337人围观)

还没有评论,来说两句吧...

相关阅读

    相关 k区间

    题目描述 给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, ... Aj(i <= j)之和是K的倍数,我们就称