Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <bits/stdc++.h>using namespace std;using pii = pair<int, int>;#define fst first#define snd secondint main(void) {ios::sync_with_stdio(false);int N;cin >> N;map<int, int> cnt;multiset<int> elem;for (int i = 0; i < N; ++ i) {int x;cin >> x;++ cnt[x];elem.insert(x);}set<pii> cand;for (auto &p: cnt) cand.insert(pii(-p.snd, p.fst));if (-2 * cand.begin()->fst - N > 1) {cout << -1 << endl;} else {int prev = 0;while (N > 0) {int y = -cand.begin()->fst, x = cand.begin()->snd;if (2 * y - N == 1) {cand.erase(pii(-y, x));