码迷,mamicode.com
首页 > 其他好文 > 详细

PASS

时间:2019-04-13 23:22:40      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:family   while   成绩   algo   编程   mit   数据   sch   tle   

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 0    Accepted Submission(s): 0


Problem Description
有 n 个选手参加了 2050 编程竞赛,他们属于 m 个学校,学校的编号为 1 到 m,2050 编程竞赛的 PASS 奖励资格如下:对于一个学校,如果它有 x 个学生参赛,它的参赛学生里成绩最好的 xk 人里,每有一个人总排名在前 50% 内(包括50%),就奖励一个 PASS。

现在给出每个选手所属的学校和它的排名(假设没有平手),请你帮主办方算一下一共发出了几个 PASS。
 

 

Input
第一行一个正整数 T (1T10) 表示数据组数。

接下来 T 组数据,对于每组数据:

第一行三个正整数 n,m,k (1n104,1m103,2k20)

第二行 n 个数,按照成绩从好到差给出 n 个选手所属的学校。
 

 

Output
对于每组数据输出一行一个整数表示答案。
 

 

Sample Input
2
6 2 2 
1 1 2 1 2 2 
8 2 2
1 1 2 1 2 2 2 2
 

Sample Output

2
2

 

 1 #include <stdio.h>
 2 #include <algorithm>
 3 #include <vector>
 4 
 5 using namespace std;
 6 
 7 struct person
 8 {
 9     int num;
10     int school;
11 }pe[10001];
12 
13 int main()
14 {
15     int t;
16     scanf("%d",&t);
17     while(t--)
18     {
19         int n,m,k;
20         int sum=0;
21         vector<int> sch[1001];
22         int t;
23         scanf("%d %d %d",&n,&m,&k);
24         for(int i=1;i<=n;i++)
25         {
26             pe[i].num=i;
27             scanf("%d",&pe[i].school);
28             sch[pe[i].school].push_back(pe[i].num); 
29         }
30         for(int i=1;i<=m;i++)
31         {
32             t=sch[i].size()/k;
33             for(int j=0;j<t;j++)
34             {
35                 if(sch[i][j]<=n/2)
36                     sum++;
37             }
38         }
39         printf("%d\n",sum);
40     }
41     return 0;
42 }

 

PASS

标签:family   while   成绩   algo   编程   mit   数据   sch   tle   

原文地址:https://www.cnblogs.com/jiamian/p/10703298.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!