#include "hieroglyphs.h"
#include <bits/stdc++.h>
#define ll long long
#define endl "\n"
using namespace std;
std::vector<int> ucs(std::vector<int> a, std::vector<int> b)
{
set<ll> sa, sb;
for (ll i : a)
sa.insert(i);
for (ll i : b)
sb.insert(i);
{
vector<int> nv;
for (ll i : a)
if (sb.count(i))
nv.push_back(i);
a = nv;
nv.clear();
for (ll i : b)
if (sa.count(i))
nv.push_back(i);
b = nv;
}
vector<int> ans, ans1, ans2, ans3;
set<ll> s;
for (ll i : a)
if (!s.count(i))
ans.push_back(i), s.insert(i);
s.clear();
map<ll, ll> first, last, cnt;
for (ll i : a)
cnt[i]++;
for (ll i = 0; i < b.size(); i++)
if (!s.count(b[i]))
ans1.push_back(b[i]), s.insert(b[i]), first[b[i]] = i;
else
last[b[i]] = i;
if (ans != ans1)
return {-1};
s.clear();
vector<ll> event[a.size() + 1];
for (ll i = 0; i < a.size(); i++)
if (s.count(a[i]))
event[i].push_back(last[a[i]]);
else if (cnt[a[i]] == 2)
event[i + 1].push_back(last[a[i]]), s.insert(a[i]);
s.clear();
for (ll i = 0; i < a.size(); i++)
{
for (ll j : event[i])
if (s.count(j))
s.erase(j);
else
s.insert(j);
auto [l, r] = array<ll, 2>{first[a[i]], last[a[i]]};
auto it = s.lower_bound(l);
if (it != s.end() and *it <= r)
return {-1};
}
return ans;
}
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |