HFUT 1355.阵前第一功(安徽省2016“京胜杯”程序设计大赛 B)

阵前第一功

Time Limit: 1000 MS Memory Limit: 65536 KB
Total Submissions: 15 Accepted: 8

Description


A国每个国民都有一定战斗力,每年国家都要对人民的战斗力进行一次排序统计,他们的排序规矩是相同战斗力的排名一样,而且只占一个排序名额。比如,有5个人:100,100,90,90,70. 两个100的并列第一,称为第一战斗力,两个90的并列第二,称为第二战斗力,依次类推。。。现在你想查询第K战斗力是多少


Input


        先输入一个整数T,表示TT<50)组数据。

每组第一行一个正整数N1000>N>0),表示表示有N个人。接下里一行N个正整数ai(2^30>=ai>=0),表示每个人的战斗力。

接下输入一个正整数KN>=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

 

数据输入后,排序

从大到小找即可

不知道为什么当时比赛的时候死都AC不了

 

AC代码:GitHub

 1 /*
 2 By:OhYee
 3 Github:OhYee
 4 HomePage:http://www.oyohyee.com
 5 Email:oyohyee@oyohyee.com
 6 Blog:http://www.cnblogs.com/ohyee/
 7 
 8 かしこいかわいい?
 9 エリーチカ!
10 要写出来Хорошо的代码哦~
11 */
12 
13 #include <cstdio>
14 #include <algorithm>
15 #include <cstring>
16 #include <cmath>
17 #include <string>
18 #include <iostream>
19 #include <vector>
20 #include <list>
21 #include <queue>
22 #include <stack>
23 #include <map>
24 #include <set>
25 using namespace std;
26 
27 //DEBUG MODE
28 #define debug 0
29 
30 //循环
31 #define REP(n) for(int o=0;o<n;o++)
32 
33 const int maxn = 1005;
34 int p[maxn];
35 
36 void Do() {
37     int n;
38     scanf("%d",&n);
39     REP(n)
40         scanf("%d",&p[o]);
41     int q;
42     scanf("%d",&q);
43 
44     sort(p,p + n);
45     int k = 1;
46     int ans = p[n - 1];
47     for(int i = n - 1;i >= 0;i--) {
48         if(ans != p[i]) {
49             ans = p[i];
50             k++;
51         }
52         if(q == k)
53             break;
54     }
55     printf("%d\n",ans);
56 }
57 
58 int main() {
59     int T;
60     scanf("%d",&T);
61     while(T--) 
62         Do();
63     return 0;
64 }

 

posted @ 2016-05-30 19:45  OhYee  阅读(341)  评论(0编辑  收藏  举报