#include <bits/stdc++.h>
using namespace std;
namespace {
const int N = 1e5 + 3;
int n, d, m, h[N], a[N], b[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 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;
if (a[i] > b[i]) swap(a[i], b[i]);
}
}
int question(int x, int y, int v) {
x++;
y++;
set <int> s, t, act;
for (int i = 1; i <= v; i++) {
if (a[i] == y) {
bool ok = s.find(b[i]) != s.end();
if (ok) s.erase(b[i]);
else s.insert(b[i]);
}
if (a[i] == x) {
bool ok = t.find(b[i]) != t.end();
if (ok) t.erase(b[i]);
else t.insert(b[i]);
}
if (b[i] == y) {
bool ok = s.find(a[i]) != s.end();
if (ok) s.erase(a[i]);
else s.insert(a[i]);
}
if (b[i] == x) {
bool ok = t.find(a[i]) != t.end();
if (ok) t.erase(a[i]);
else t.insert(a[i]);
}
}
for (int it: s) act.insert(h[it]);
int ans = 1e9;
for (int i: t) {
// cout << x << ' ' << i << '\n';
auto cur = act.lower_bound(h[i]);
if (cur != act.end()) ans = min(ans, abs(h[i] - *cur));
if (cur == act.begin()) continue;
cur--;
ans = min(ans, abs(h[i] - *cur));
}
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... |