Submission #1264061

#TimeUsernameProblemLanguageResultExecution timeMemory
1264061VMaksimoski008The Potion of Great Power (CEOI20_potion)C++20
17 / 100
3092 ms12960 KiB
#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 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...