#include <bits/stdc++.h>
using namespace std;
using ll = long long;
bool check_ap(const vector<ll>& v) {
if (v.size() <= 1) return true;
ll d = v[1] - v[0];
for (size_t i = 2; i < v.size(); ++i)
if (v[i] - v[i-1] != d) return false;
return true;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
if (!(cin >> n)) return 0;
vector<ll> a(n);
for (int i = 0; i < n; ++i) cin >> a[i];
sort(a.begin(), a.end());
if (n == 2) {
cout << 1 << "\n" << a[0] << "\n" << 1 << "\n" << a[1] << "\n";
return 0;
}
vector<pair<int,int>> seeds;
seeds.emplace_back(0,1);
seeds.emplace_back(0,2);
seeds.emplace_back(1,2);
for (auto [p,q] : seeds) {
if (p < 0 || q < 0 || p >= n || q >= n) continue;
if (p == q) continue;
vector<bool> used(n,false);
vector<ll> r1, r2;
if (p > q) swap(p,q);
r1.push_back(a[p]);
r1.push_back(a[q]);
used[p] = used[q] = true;
ll d1 = a[q] - a[p];
ll last1 = a[q];
for (int i = 0; i < n; ++i) {
if (used[i]) continue;
ll x = a[i];
if (x == last1 + d1) {
r1.push_back(x);
last1 = x;
used[i] = true;
} else {
r2.push_back(x);
used[i] = true;
}
}
if (r2.empty()) {
continue;
}
if (check_ap(r2)) {
cout << (int)r1.size() << "\n";
for (size_t i = 0; i < r1.size(); ++i) {
if (i) cout << ' ';
cout << r1[i];
}
cout << "\n" << (int)r2.size() << "\n";
for (size_t i = 0; i < r2.size(); ++i) {
if (i) cout << ' ';
cout << r2[i];
}
cout << "\n";
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... |