Submission #1222560

#TimeUsernameProblemLanguageResultExecution timeMemory
1222560KindaGoodGamesThe Potion of Great Power (CEOI20_potion)C++20
0 / 100
401 ms327680 KiB
// #pragma GCC optimize("O3, unroll-loops, Ofast") #include<bits/stdc++.h> using namespace std; #define pii pair<int,int> int BSZ = 1000; int n, d; vector<int> height; vector<pii> change; vector<vector<set<int>>> checks; void init(int N, int D, int H[]) { height.resize(N); n = N; for(int i = 0; i < n; i++){ height[i] = H[i]; } } void curseChanges(int U, int A[], int B[]) { BSZ = sqrt(U); checks.reserve(ceil(n/(double)BSZ)); change.resize(U); vector<set<int>> adj(n); for(int i = 0;i < U; i++){ change[i] = {A[i], B[i]}; } for(int i = 0; i < U; i++){ if(i % BSZ == 0){ checks.push_back(adj); } int a,b; tie(a,b) = change[i]; if(adj[a].count(b)){ adj[a].erase(b); adj[b].erase(a); }else{ adj[a].insert(b); adj[b].insert(a); } } if(U % BSZ == 0){ checks.push_back(adj); } } int question(int x, int y, int v) { vector<set<int>> adj=checks[v/BSZ]; for(int i = (v/BSZ)*BSZ; i < v; i++){ if(i % BSZ == 0){ checks.push_back(adj); } int a,b; tie(a,b) = change[i]; if(adj[a].count(b)){ adj[a].erase(b); adj[b].erase(a); }else{ adj[a].insert(b); adj[b].insert(a); } } vector<set<int>> reach(n); for(int i = 0; i < n; i++){ for(auto u : adj[i]){ reach[i].insert(height[u]); } } int mi = 1e9; for(auto u : reach[x]){ { auto it = reach[y].lower_bound(u); if(it != reach[y].end()){ mi = min(mi, abs(u-(*it))); } } { auto it = reach[y].upper_bound(u); if(it != reach[y].begin()){ it--; mi = min(mi, abs(u-(*it))); } } } return mi; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...