安徽省2016“京勝杯”程序設計大賽_B_陣前第一功

陣前第一功

Time Limit: 1000 MS Memory Limit: 65536 KB
Total Submissions: 63 Accepted: 29

Description


A國每個國民都有一定戰鬥力,每年國家都要對人民的戰鬥力進行一次排序統計,他們的排序規矩是相同戰鬥力的排名一樣,而且只佔一個排序名額。比如,有5個人:100,100,90,90,70. 兩個100的並列第一,稱爲第一戰鬥力,兩個90的並列第二,稱爲第二戰鬥力,依次類推。。。現在你想查詢第K戰鬥力是多少



Input


先輸入一個整數T,表示T(T<50)組數據。

每組第一行一個正整數N(1000>N>0),表示表示有N個人。接下里一行N個正整數ai(2^30>=ai>=0),表示每個人的戰鬥力。

接下輸入一個正整數K(N>=K>0)。(保證輸入都合法)


Output


輸出第K戰鬥力,輸出佔一行


Sample Input


2
5
100 90 90 100 70
2
10 
1 2 3 3 3 400 3 4 3 1 
4

Sample Output


90
2
題解:此題只需要排序去重即可,屬於簡單題

#include <iostream>
#include <cstdio>
#include <algorithm>

using namespace std;

int main(int argc, char const *argv[])
{
    int T, n, k, cnt, i;
    scanf("%d", &T);
    while (T--)
    {
        cnt = 0;
        scanf("%d", &n);
        int *a = new int[n];
        for (i=0; i<n; i++)
            scanf("%d", &a[i]);
        sort(a, a+n);
        scanf("%d", &k);
        for (i=n-1; i>0; i--) {
            if (a[i] != a[i-1]) cnt++;
            if (cnt == k) break;
        }
        printf("%d\n", a[i]);
        delete []a;
    }
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章