https://atcoder.jp/contests/abc271/tasks/abc271_c
致远星
赛时交了 4 发都没有过去。是我的贪心做法假了还是我写错了?
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
set<int> exi;
vector<int> all;
int cnt = 0;
for (int i = 1; i <= n; i++) {
int tmp;
cin >> tmp;
if (exi.count(tmp)) {
cnt++;
} else {
exi.insert(tmp);
all.push_back(tmp);
}
}
int idx = 0, i = 1;
while (true) {
while (idx < all.size() - 1 && all[idx] < i) {
idx++;
}
if (all[idx] != i) {
if (cnt >= 2) {
cnt -= 2;
} else {
if (cnt == 1) {
if (idx + 1 < all.size() && all[all.size() - 1] > i) {
all.pop_back();
cnt = 0;
} else {
break;
}
} else {
if (idx + 2 < all.size() && all[all.size() - 1] > i && all[all.size() - 2] > i) {
all.pop_back();
all.pop_back();
} else {
break;
}
}
}
}
i++;
}
cout << i - 1 << endl;
return 0;
}