# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
591851 | Loki_Nguyen | Drvca (COCI19_drvca) | C++14 | 100 ms | 19044 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pll pair<ll, int>
#define pii pair<int, int>
#define fi first
#define se second
#define pb push_back
#define int long long
const int N = 3e5 + 3;
const int M = 1 << 24;
const int mod = 1e9 + 7;
const int base = 300;
const ll inf = 1e12;
int pw(int k, int n)
{
int total = 1;
for (; n; n >>= 1)
{
if (n & 1)
total = total * k % mod;
k = k * k % mod;
}
return total;
}
int m, n, t, k, a[N], ans, b[N], c[N];
vector<int> adj[N], L, R;
multiset<int> st, cur;
bool check(int s, int d)
{
L.clear();
R.clear();
st = cur;
while (!st.empty())
{
if (st.find(s) == st.end())
break;
L.pb(s);
st.erase(st.find(s));
s += d;
}
if (st.size() <= 1)
{
if (!st.empty())
R.pb(*st.begin());
return true;
}
s = (*st.begin());
R.pb(s);
st.erase(st.find(s));
d = (*st.begin()) - s;
while (!st.empty())
{
s += d;
R.pb(s);
if (*st.begin() != s)
return false;
st.erase(st.find(s));
}
return true;
}
void sol()
{
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
cur.insert(a[i]);
}
sort(a + 1, a + 1 + n);
if (check(a[1], a[2] - a[1]))
{
if (R.empty())
{
R.pb(L.back());
L.pop_back();
}
}
else if (check(a[1], a[3] - a[1]))
{
if (R.empty())
{
R.pb(L.back());
L.pop_back();
}
}
else if (check(a[2], a[3] - a[2]))
{
if (R.empty())
{
R.pb(L.back());
L.pop_back();
}
}
else
{
cout << -1;
return;
}
cout << L.size() << '\n';
for (int x : L)
cout << x << " ";
cout << '\n';
cout << R.size() << '\n';
for (int x : R)
cout << x << " ";
}
int32_t main()
{
cin.tie(0);
cout.tie(0);
ios_base::sync_with_stdio(0);
#define task "tests"
if (fopen(task ".inp", "r"))
{
freopen(task ".inp", "r", stdin);
freopen(task ".out", "w", stdout);
}
int ntest = 1;
// cin >> ntest;
while (ntest-- > 0)
sol();
}
Compilation message (stderr)
# | 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... |