# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
966361 | anton | The Potion of Great Power (CEOI20_potion) | C++17 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<int, int>
typedef complex<int> point;
const int INF = 1e9;
int dist(vector<int>& a,int aid, vector<int>& b, int bid){
if(a.size() == 0 || b.size() == 0){
return INF;
}
int ia =0, ib = 0;
int res= abs(a[0]-b[0]);
while(ia<a.size()-1 || ib<b.size()-1){
if(ia==a.size()-1){
ib++;
}
else if(ib==b.size()-1){
ia++;
}
else if(a[ia]<=b[ib]){
ia++;
}
else{
ib++;
}
res = min(res, abs(a[ia]-b[ib]));
}
return res;
}
vector<vector<int>> vs;
vector<int> h;
set<pii> cur;
int n;
void init(int N, int D, int H[]) {
vs.resize(N);
h.resize(N);
for(int i = 0; i<N; i++){
h[i] = H[i];
}
n= N;
}
void curseChanges(int U, int A[], int B[]) {
for(int i = 0; i<U; i++){
int a= A[i], b= B[i];
if(cur.find({a, b})!=cur.end()){
cur.erase({a, b});
}
else{
cur.insert({a, b});
}
}
for(auto e: cur){
vs[e.first].push_back(h[e.second]);
vs[e.second].push_back(h[e.first]);
}
for(int i = 0; i<n; i++){
sort(vs[i].begin(), vs[i].end());
}
}
int question(int x, int y, int v) {
return dist(vs[x],x vs[y], y);
}