本来是练习模拟,但是做了这个题,这个题和算法也是有一点关系的,题目让找众数,也就是出现次数最多的数,因为数据量很大,用普通的方法会超时,题目里面一个最重要的条件,这个众数的出现次数一半以上,那么输入一个数,如果和前面的一个数不一样,就把两个数都删了,也就是说一换一,如果和前面的一样那就先存着,最后剩下的一定就是若干众数,
#include <bits/stdc++.h>
#define fi first
#define se second
#define pb push_back
#define mk make_pair
#define sz(x) ((int) (x).size())
#define all(x) (x).begin(), (x).end()
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> pa;
const int N = 2e6 + 5;
int a[N];
int main() {
int n;
cin >> n;
int cur = 0;
for (int i = 0; i < n; i++) {
int x;
cin >> x;
if (!i) {
a[0] = x;
continue;
}
if (cur == -1) {
a[++cur] = x;
} else {
if (x != a[cur]) cur--;
else a[++cur] = x;
}
}
cout << a[cur] << endl;
return 0;
}