陣前第一功
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
5
100 90 90 100 70
2
10
1 2 3 3 3 400 3 4 3 1
4
Sample Output
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;
}