zoukankan      html  css  js  c++  java
  • 【9205】军事机密

    Time Limit: 2 second
    Memory Limit: 32 MB

    问题描述
    我军方截获的信息由n(n≤30000)个数字组成,因为是敌国的高端秘密,所以一时不能被破获。最原始的想法就是对这n个数进行从小到大排序,每个数都对应一个序号,然后对第i个是什么数感兴趣,现在要求编程完成。

    Input

    第一行是n,第二行是n个截获的数字,第三行是数字k,接着是k行要输出数的序号。

    Output

    k行序号所对应的数字。

    Sample Input

    5
    121 1 126 123 7
    3
    2
    4
    3
    
    

    Sample Output

    7
    123
    121
    
    

    【题解】

    先把数字快排,从小到大排,一遍,然后对于输入的i,输出a[i]就可以了。这题就是拿来练快排的。啦

    【代码】

    #include <cstdio>
    
    int n,a[30001];
    
    void input_data()
    {
        scanf("%d",&n); //输入n个数据
        for (int i = 1;i <= n;i++)
            scanf("%d",&a[i]);
    }
    
    void kp(int l,int r) //进行快排
    {
        int i = l,j = r,m = a[(i+j)/2];
        do
        {
            while (a[i] < m) i++;
            while (m < a[j]) j--;
            if (i <= j)
            {
                a[0] = a[i];a[i] = a[j];a[j] = a[0];
                i++;j--;
            }
        }
        while (i <= j);
        if (l < j) kp(l,j);
        if (i < r) kp(i,r);
    }
    
    void output_ans() //对于提问输出相应位置的数字就好了
    {
        int k;
        scanf("%d",&k);
        for (int i = 1;i <= k;i++)
            {
                int m;
                scanf("%d",&m);
                printf("%d
    ",a[m]);
            }
    }
    
    int main()
    {
        input_data();
        kp(1,n);
        output_ans();
        return 0;
    }
    


     

  • 相关阅读:
    [JS11] 状态栏滚动
    [JS10] 获取时间
    [JS9] document's bgColor改变背景颜色
    [JS8] 显示从(0,0)到(0,0)的坐标
    [JS7] 显示从0到99的100个数字
    使用StringBuilder或StringBuffer简单优化
    启动一个线程的三种方法
    设置IE浏览器指定的功能
    jquery 判断元素是否存在于数组中
    Hibernate validator验证
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7632422.html
Copyright © 2011-2022 走看看