#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
vector<long long> a(n);
for (int i = 0; i < n; i++) cin >> a[i];
sort(a.begin(), a.end());
unordered_set<long long> all(a.begin(), a.end());
for (int j = 1; j < n; j++) {
long long d1 = a[j] - a[0];
if (d1 == 0) continue; // difference must be > 0
vector<long long> row1;
unordered_set<long long> used;
for (long long x = a[0]; all.count(x); x += d1) {
row1.push_back(x);
used.insert(x);
}
vector<long long> row2;
for (auto x : a) if (!used.count(x)) row2.push_back(x);
if (row1.empty() || row2.empty()) continue;
bool ok = true;
if (row2.size() > 2) {
long long d2 = row2[1] - row2[0];
for (int i = 2; i < (int)row2.size(); i++) {
if (row2[i] - row2[i - 1] != d2) {
ok = false;
break;
}
}
}
if (ok) {
cout << (int)row1.size() << "\n";
for (int i = 0; i < (int)row1.size(); i++)
cout << row1[i] << (i + 1 == row1.size() ? '\n' : ' ');
cout << (int)row2.size() << "\n";
for (int i = 0; i < (int)row2.size(); i++)
cout << row2[i] << (i + 1 == row2.size() ? '\n' : ' ');
return 0;
}
}
vector<long long> row1 = {a[0]};
vector<long long> row2(a.begin() + 1, a.end());
bool ok = true;
if (row2.size() > 2) {
long long d2 = row2[1] - row2[0];
for (int i = 2; i < (int)row2.size(); i++) {
if (row2[i] - row2[i - 1] != d2) {
ok = false;
break;
}
}
}
if (!row2.empty() && ok) {
cout << 1 << "\n" << row1[0] << "\n";
cout << (int)row2.size() << "\n";
for (int i = 0; i < (int)row2.size(); i++)
cout << row2[i] << (i + 1 == row2.size() ? '\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... |