제출 #1230055

#제출 시각아이디문제언어결과실행 시간메모리
1230055GrayThe Potion of Great Power (CEOI20_potion)C++20
38 / 100
766 ms327680 KiB
#include <algorithm> #include <bits/stdc++.h> using namespace std; #define ll int #define ff first #define ss second vector<int> h; int n, mxd, d; vector<vector<set<int>>> A; vector<vector<ll>> tA; void init(int N, int D, int H[]) { n=N; mxd=D; h.resize(n); for (int i=0; i<n; i++) h[i]=H[i]; } void curseChanges(int U, int u[], int v[]) { A.resize(n); tA.resize(n); d=U; for (int i=0; i<n; i++) { A[i].push_back(set<int>()); tA[i].push_back(0); } for (int i=0; i<U; i++){ A[u[i]].push_back(A[u[i]].back()); A[v[i]].push_back(A[v[i]].back()); tA[u[i]].push_back(i+1); tA[v[i]].push_back(i+1); if (A[u[i]].back().count(v[i])){ A[u[i]].back().erase(v[i]); A[v[i]].back().erase(u[i]); }else{ A[u[i]].back().insert(v[i]); A[v[i]].back().insert(u[i]); } } } int question(int x, int y, int v) { ll indx = upper_bound(tA[x].begin(), tA[x].end(), v)-tA[x].begin()-1; vector<int> hs; for (auto u:A[x][indx]){ hs.push_back(h[u]); } if (hs.empty()) return 1e9; sort(hs.begin(), hs.end()); hs.erase(unique(hs.begin(), hs.end()), hs.end()); int mn=1e9; int indy = upper_bound(tA[y].begin(), tA[y].end(), v)-tA[y].begin()-1; for (auto u:A[y][indy]){ ll ind = lower_bound(hs.begin(), hs.end(), h[u])-hs.begin(); if (ind<(ll)hs.size()){ mn=min(mn, hs[ind]-h[u]); } if (ind){ mn=min(mn, h[u]-hs[ind-1]); } } return mn; }
#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...