链接:[ABC329D] Election Quick Report - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
题意翻译
共有 n 个人,有 m 次投票,每次会投给这 n 个人中的其中一个,问每次投票后得票最多的人是谁,如果有多个人同时得票最多,输出编号最小的。
输入输出样例
输入
3 7 1 2 2 3 1 3 3
输出 #1复制
1 1 2 2 1 1 3
输入
100 5 100 90 80 70 60
输出
100 90 80 70 60
输入
9 8 8 8 2 2 8 8 2 2
输出
8 8 8 2 8 8 8 2
解题思路:这题没有很复杂,完全可以当成两两比较,比如:1号1票,2号1票 ,此时输出1号。
比如:1号1票 ,2号2票,输出2号,一次类推,两两比较即可。
AC代码:
#include<iostream>
using namespace std;
const int N = 2e5+10;
int d[N]; //标记第i个人多少票
int maxn,pos; //maxn用来标记当前是谁票最多,pos表示编号最小的
int main()
{
int n,m;
cin >> n >> m;
for(int i=1;i<=m;i++)
{
int x;
cin >> x;
d[x]++;
if(d[x] > maxn)
{
maxn = d[x];
pos = x;
}
else if(d[x] == maxn)
{
if(pos > x)
pos =x;
}
cout << pos << endl;
}
return 0;
}