#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
const int B = 100;
int n, D, h[N], a[N], b[N], m;
void init(int _N, int _D, int H[]) {
n = _N;
D = _D;
for(int i=0; i<n; i++) h[i] = H[i];
}
void curseChanges(int U, int A[], int B[]) {
m = U;
for(int i=0; i<m; i++) {
a[i] = A[i];
b[i] = B[i];
if(a[i] > b[i]) swap(a[i], b[i]);
}
}
int question(int x, int y, int v) {
int ans = 1e9;
set<pair<int, int> > st;
for(int i=0; i<v; i++) {
if(st.count({ a[i], b[i] })) {
st.erase({ a[i], b[i] });
} else {
st.insert({ a[i], b[i] });
}
}
vector<int> L, R;
for(auto [u, v] : st) {
if(u == x || v == x) L.push_back(h[u^v^x]);
if(u == y || v == y) R.push_back(h[u^v^y]);
}
if(L.empty() || R.empty()) return 1e9;
sort(L.begin(), L.end());
sort(R.begin(), R.end());
int j = 0;
for(int i=0; i<R.size(); i++) {
while(j+1 < L.size() && L[j+1] <= R[i]) j++;
ans = min(ans, abs(L[j] - R[i]));
}
j = L.size() - 1;
for(int i=R.size()-1; i>=0; i--) {
while(j && L[j-1] >= R[i]) j--;
ans = min(ans, abs(L[j] - R[i]));
}
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... |