Submission #926212

#TimeUsernameProblemLanguageResultExecution timeMemory
926212vjudge1Joker (BOI20_joker)C++17
0 / 100
192 ms11724 KiB
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx") #pragma GCC optimize("Ofast,unroll-loops,fast-math,O3") #include<bits/stdc++.h> using namespace std; #define all(a) a.begin(), a.end() #define rall(a) a.rbegin(), a.rend() #define sz(a) (int)a.size() #define s second #define f first using ll = long long; using pii = pair<int, int>; using pll = pair<ll, ll>; mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); vector<pii> rid = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}}; vector<pii> dir = {{-1, -1}, {-1, 1}, {1, -1}, {1, 1}}; const int N = 2e5 + 1, mod = 998244353; const ll inf = 1e9; double eps = 1e-15; bool flg = 0; bool ok = 1, was[N]; vector<pii> g(N); int p[N + 1], pr[N]; int sz[N + 1], pt[N + 1]; vector<array<int, 2>> h; pii get(int x) { if (p[x] == x) return {x, 0}; pii val = get(p[x]); return {val.f, (pr[x] + val.s) % 2}; } void add(int id) { int u = g[id].f; int v = g[id].s; pii x = get(u); pii y = get(v); if (x.f == y.f) { if (x.s == y.s) { if (ok) { h.push_back({-1, -1}); ok = 0; } } return; } if (sz[x.f] > sz[y.f]) swap(x, y); h.push_back({x.f, sz[x.f]}); h.push_back({y.f, sz[y.f]}); p[x.f] = y.f; pr[x.f] = (x.s + y.s + 1) % 2; sz[y.f] += sz[x.f]; } void rb() { while (sz(h) && !pt[sz(h)]) { array<int, 2> x = h.back(); h.pop_back(); if (x[0] == -1) { ok = 1; continue; } p[x[0]] = x[0]; pr[x[0]] = 0; sz[x[0]] = x[1]; } pt[sz(h)]--; } int ps[N]; void f(int l, int r, int tl, int tr) { if (l > r) return; int m = (l + r) / 2; pt[sz(h)]++; for (int i = m - 1; i >= l; i--) add(i); pt[sz(h)]++; if (!ok) ps[m] = tr + 1; for (int i = tr; ok && i > m; i--) { add(i); if (!ok) { ps[m] = i; break; } } rb(); add(m); f(m + 1, r, ps[m], tr); rb(); pt[sz(h)]++; for (int i = tr; i > ps[m]; i--) add(i); f(l, m - 1, tl, ps[m]); rb(); } void slv() { int n, m, q; cin >> n >> m >> q; for (int i = 1; i <= m; i++) { int u, v; cin >> u >> v; g[i] = {u, v}; } for (int i = 1; i <= n; i++) p[i] = i, sz[i] = 1; f(1, m, 1, m); for (int i = 1; i <= q; i++) { int l, r; cin >> l >> r; if (ps[l] > r) cout << "YES\n"; else cout << "NO\n"; } } main() { //freopen("rsq.in", "r", stdin); //freopen("rsq.out", "w", stdout); ios_base::sync_with_stdio(0); cin.tie(0); int tp = 1; if (flg) cin >> tp; while (tp--) { slv(); } } //wenomechainsama

Compilation message (stderr)

Joker.cpp:128:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
  128 | main() {
      | ^~~~
#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...