// #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 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';
}
int ans = 1e9;
for (int i: s[x]) {
// cout << x << ' ' << i << '\n';
int l = 0, r = len(act) - 1;
while (l <= r) {
int md = l + r >> 1;
if (h[act[md]] <= h[i]) l = md + 1;
else r = md - 1;
}
if (0 <= r) ans = min(ans, abs(h[i] - act[r]));
if (l < len(act)) ans = min(ans, abs(h[i] - act[l]));
}
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... |