zoukankan      html  css  js  c++  java
  • 算法训练 区间k大数查询

    问题描述

    给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。

    输入格式

    第一行包含一个数n,表示序列长度。

    第二行包含n个正整数,表示给定的序列。

    第三个包含一个正整数m,表示询问个数。

    接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个。序列元素从1开始标号。

    输出格式
    总共输出m行,每行一个数,表示询问的答案。
    样例输入
    5
    1 2 3 4 5
    2
    1 5 2
    2 3 2
    样例输出
    4
    2
    数据规模与约定

    对于30%的数据,n,m<=100;

    对于100%的数据,n,m<=1000;

    保证k<=(r-l+1),序列中的数<=106

    #include<iostream>
    #include<stdio.h>
    #include<algorithm>
    using namespace std;
    int main()
    {
       int n,m,l,r,k,i,j;
       int ng[1000],mg[1000];
       scanf("%d",&n);              //输入n
       for(i=0;i<n;i++)             //输入序列n
          scanf("%d",&ng[i]);
       scanf("%d",&m);                //输入询问个数
       while(m--)   
       {
            scanf("%d%d%d",&l,&r,&k);     //输入m行数,l,r,l
           
       for(i=l-1,j=0;i<=r-1;i++,j++)    //筛选出输入的数从l到r
        {
              mg[j]=ng[i];
        }  
        sort(mg,mg+r-l+1);            //用sort进行排序
        printf("%d ",mg[r-l-k+1]);
       }
        return 0;
    }

  • 相关阅读:
    linux下shell显示-bash-4.1#不显示路径解决方法
    update chnroute
    An error "Host key verification failed" when you connect to other computer by OSX SSH
    使用dig查询dns解析
    DNS被污染后
    TunnelBroker for EdgeRouter 后记
    mdadm详细使用手册
    关于尼康黄的原因
    Panda3d code in github
    Python实例浅谈之三Python与C/C++相互调用
  • 原文地址:https://www.cnblogs.com/zady123/p/6186824.html
Copyright © 2011-2022 走看看