Submission #1159227

#TimeUsernameProblemLanguageResultExecution timeMemory
1159227aligay100infaThe Potion of Great Power (CEOI20_potion)C++20
14 / 100
2954 ms32536 KiB
// #pragma GCC optimize("O3,unroll-loops") // #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") #include <bits/stdc++.h> #define len(x) (int)x.size() using namespace std; namespace { const int N = 2e5 + 3; int n, d, m, h[N], a[N], b[N]; set <int> s[N]; } void swap(int &a, int &b) { a = a ^ b; b = a ^ b; a = a ^ b; } int min(int x, int y) { if (x < y) return x; return y; } int max(int x, int y) { if (x > y) return x; return y; } void init(int N, int D, int H[]) { n = N; d = D; for (int i = 1; i <= n; i++) { h[i] = H[i - 1]; } } void upd(int id, int x) { bool ok = s[id].find(x) != s[id].end(); if (ok) s[id].erase(x); else s[id].insert(x); } void curseChanges(int U, int A[], int B[]) { m = U; for (int i = 1; i <= m; i++) { a[i] = A[i - 1] + 1; b[i] = B[i - 1] + 1; upd(a[i], b[i]); upd(b[i], a[i]); } } int question(int x, int y, int v) { x++; y++; vector <int> act; for (int it: s[y]) { act.push_back(h[it]); // cout << y << ' ' << it << '\n'; } sort(act.begin(), act.end()); int ans = 1e9; if (!len(act)) return ans; for (int i: s[x]) { // cout << x << ' ' << i << '\n'; int l = 0, r = len(act) - 1; while (l + 1 < r) { int md = l + r >> 1; if (h[i] <= act[md]) r = md; else l = md; } ans = min({ans, abs(h[i] - act[l]), abs(h[i] - act[r])}); } 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...