제출 #1214288

#제출 시각아이디문제언어결과실행 시간메모리
1214288NeltHieroglyphs (IOI24_hieroglyphs)C++20
3 / 100
423 ms28716 KiB
#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; 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 + 1].push_back(last[a[i]]); else if (cnt[a[i]] == 2) event[i].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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...