#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
if (!(cin >> n)) return 0;
vector<long long> a(n);
for (int i = 0; i < n; ++i) cin >> a[i];
sort(a.begin(), a.end());
if (n == 1) {
cout << -1 << "\n";
return 0;
}
auto try_pair = [&](int i, int j) -> bool {
vector<char> used(n, false);
long long d1 = a[j] - a[i];
used[i] = true;
used[j] = true;
long long last = a[j];
int pos = j;
while (true) {
long long need = last + d1;
auto it = lower_bound(a.begin() + pos + 1, a.end(), need);
if (it == a.end() || *it != need) break;
pos = int(it - a.begin());
used[pos] = true;
last = need;
}
vector<long long> b;
for (int k = 0; k < n; ++k) if (!used[k]) b.push_back(a[k]);
if (b.empty()) return false;
if ((int)b.size() >= 2) {
long long d2 = b[1] - b[0];
for (size_t t = 2; t < b.size(); ++t) {
if (b[t] - b[t-1] != d2) return false;
}
}
vector<long long> a1, a2;
for (int k = 0; k < n; ++k) {
if (used[k]) a1.push_back(a[k]);
else a2.push_back(a[k]);
}
cout << a1.size() << "\n";
for (size_t t = 0; t < a1.size(); ++t) {
if (t) cout << ' ';
cout << a1[t];
}
cout << "\n";
cout << a2.size() << "\n";
for (size_t t = 0; t < a2.size(); ++t) {
if (t) cout << ' ';
cout << a2[t];
}
cout << "\n";
return true;
};
vector<pair<int,int>> tries;
if (n >= 2) tries.emplace_back(0,1);
if (n >= 3) {
tries.emplace_back(0,2);
tries.emplace_back(1,2);
}
for (auto pr : tries) {
if (try_pair(pr.first, pr.second)) return 0;
}
cout << -1 << "\n";
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |