#include<bits/stdc++.h>
using namespace std;
int n,d,h[200005];
vector<int>have[200005];
int inf=1e9;
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[]) {
map<pair<int,int>,int>mp;
for(int i=0;i<U;i++){
if(A[i]>B[i])swap(A[i],B[i]);
mp[{A[i],B[i]}]^=1;
}
for(auto x:mp){
if(x.second==1)have[x.first.first].push_back(x.first.second),have[x.first.second].push_back(x.first.first);
}
}
int question(int x, int y, int v) {
vector<int>l,r;
for(auto a:have[x])l.push_back(h[a]);
for(auto a:have[y])r.push_back(h[a]);
sort(l.begin(),l.end());
sort(r.begin(),r.end());
int ll=-1,rr=-1;
int ans=inf;
while(1){
if(ll==l.size()-1&&rr==r.size()-1)break;
if(rr==r.size()-1)while(ll+1!=l.size())ans=min(ans,abs(l[ll+1]-r[rr])),ll++;
if(ll==l.size()-1)while(rr+1!=r.size())ans=min(ans,abs(r[rr+1]-l[ll])),rr++;
if(ll==l.size()-1&&rr==r.size()-1)break;
if(l[ll+1]<r[rr+1]){
if(rr>=0)ans=min(ans,abs(l[ll+1]-r[rr]));
ll++;
}else{
if(ll>=0)ans=min(ans,abs(r[rr+1]-l[ll]));
rr++;
}
}
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... |