C. 【六月份 -- 基础语法组】-- T3 -- 阿衰
zhangyuqiTAT · · 个人记录
https://cspjs.online/contest/699/problem/3
#include <bits/stdc++.h>
using namespace std;
int n, a[1000010], t = 0, k;
vector<int> vv;
int main() {
freopen("unlucky.in", "r", stdin);
freopen("unlucky.out", "w", stdout);
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
sort(a + 1, a + n + 1);
for (int i = 1; i <= n; i++) {
if (a[i] != a[i - 1])
vv.push_back(a[i]);
}
k = n - vv.size();
for (int i = 0; i < vv.size(); i++) {
if (vv[i] == t + 1)
k++, t++;
else if (vv[i] > t + 1) {
if (k >= 2)
k--, t++;
else if (k == 1)
vv.pop_back(), t++;
else if (k == 0 && i <= vv.size() - 2) {
vv.pop_back();
vv.pop_back();
k++;
}
i--;
}
}
while (k >= 2) {
t++;
k -= 1;
}
cout << t;
return 0;
}