本文主要是介绍2020ccpc河南赛ProblemA 班委竞选,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
签到题
某班级中有 n 位学生,学号为 1, 2, . . . , n。现在班级中正在举行 m 个班干部职位的竞选,职位用 1, 2, . . ., m 编号。学号为 i 的同学竞选的职位为 ci,获得 ti 票。最终每个职位选择票数最高的同学上任, 若存在多个同学票数一致,则选择学号最小的同学上任。 现在给你唱票结果,请你告诉班主任最终的班干部名单。
输入格式
第一行包含两个整数 n, m (1 ≤ n ≤ 51, 1 ≤ m ≤ 12, m ≤ n),含义见题目描述。接下来 n 行,第 i 行包含两个整数 ci, ti (1 ≤ ci ≤ m, 1 ≤ ti ≤ n),含义见题目描述。
数据保证每个职位至少有一位同学参与竞选。
输出格式
输出一行,包含 m 个整数。第 i 个整数表示担任第 i 个班干部职位的同学学号。
思路:
1.开一个足够大的二维数组,一维表示职位,二维表示改职位下的最大票数【1表示职位,2表示人】
2.初始化数组。如果对数组不进行初始化,不会AC。
3.博主从1开始对数组计数。i表示班级人数,每次输入职位t和第i人获得的票数c,如果第i个人的职位c票数小于t,则把此时的票数赋值给该职位,作为最大票,同时记录对应的人。
具体代码如下
#include<bits/stdc++.h>
using namespace std;
int main()
{int n,m,c,t;cin>>n>>m;int a[100][2];memset(a,0,sizeof(a));for(int i=1;i<=n;i++){cin>>c>>t;if(a[c][1]<t){a[c][1]=t;a[c][2]=i;}}for(int i=1;i<=m;i++){cout<<a[i][2]<<" ";}return 0;
}
这篇关于2020ccpc河南赛ProblemA 班委竞选的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!