#include <bits/stdc++.h>
using namespace std;
#define int long long
const int Nmax = 1e5 + 10;
int n;
int a[Nmax];
multiset <int> st;
vector <int> v;
map <int , int> mp;
void check(int start, int d)
{
int now = start;
for (int i = 1; i <= n; i++)
st.insert(a[i]);
multiset<int>::iterator it2 = st.begin();
++it2;
for (; it2 != st.end(); it2++)
{
int diff = *it2 - *prev(it2);
mp[diff]++;
}
while (st.find(now) != st.end())
{
v.push_back(now);
multiset<int>::iterator it = st.find(now);
now += d;
if (it != st.begin())
{
int diff = *it - *prev(it);
mp[diff]--;
if (mp[diff] == 0) mp.erase(diff);
}
if (it != --st.end())
{
int diff = *next(it) - *it;
mp[diff]--;
if (mp[diff] == 0) mp.erase(diff);
}
if (it != st.begin() && it != --st.end())
{
int diff = *next(it) - *prev(it);
mp[diff]++;
}
st.erase(it);
if (mp.size() == 1)
{
if (st.empty())
{
st.insert(v.back());
v.pop_back();
}
cout << v.size() << '\n';
for (int i = 0 ; i < (int)v.size() ; i++)
cout << v[i] << ' ';
cout << '\n';
cout << st.size() << '\n';
for (multiset<int>::iterator it3 = st.begin() ; it3 != st.end() ; it3++)
cout << *it3 << ' ';
cout << '\n';
break;
}
}
}
main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n;
for (int i = 1 ; i <= n ; i++)
cin >> a[i];
sort(a + 1 , a + n + 1);
if (n <= 2)
{
cout << 1 << '\n' << a[1] << '\n';
cout << 1 << '\n' << a[2] << '\n';
return 0;
}
check(a[1], a[2] - a[1]);
check(a[1], a[3] - a[1]);
check(a[2], a[3] - a[2]);
cout << -1;
}
컴파일 시 표준 에러 (stderr) 메시지
drvca.cpp:76:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
76 | main()
| ^~~~
# | 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... |