Submission #829295

#TimeUsernameProblemLanguageResultExecution timeMemory
829295HanksburgerTourism (JOI23_tourism)C++17
7 / 100
99 ms11740 KiB
#include <bits/stdc++.h> using namespace std; int mx[400005], mn[400005], c[100005]; vector<int> adj[100005]; void build(int i, int l, int r) { if (l==r) { mx[i]=mn[i]=c[l]; return; } int mid=(l+r)/2; build(i*2, l, mid); build(i*2+1, mid+1, r); mx[i]=max(mx[i*2], mx[i*2+1]); mn[i]=min(mn[i*2], mn[i*2+1]); } int qryMx(int i, int l, int r, int ql, int qr) { if (ql<=l && r<=qr) return mx[i]; int mid=(l+r)/2, res=0; if (l<=qr && ql<=mid) res=max(res, qryMx(i*2, l, mid, ql, qr)); if (mid<qr && ql<=r) res=max(res, qryMx(i*2+1, mid+1, r, ql, qr)); return res; } int qryMn(int i, int l, int r, int ql, int qr) { if (ql<=l && r<=qr) return mn[i]; int mid=(l+r)/2, res=1e9; if (l<=qr && ql<=mid) res=min(res, qryMn(i*2, l, mid, ql, qr)); if (mid<qr && ql<=r) res=min(res, qryMn(i*2+1, mid+1, r, ql, qr)); return res; } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, m, q; cin >> n >> m >> q; for (int i=1; i<n; i++) { int u, v; cin >> u >> v; adj[u].push_back(v); adj[v].push_back(u); } for (int i=1; i<=m; i++) cin >> c[i]; build(1, 1, m); for (int i=1; i<=q; i++) { int l, r; cin >> l >> r; cout << qryMx(1, 1, m, l, r)-qryMn(1, 1, m, l, r)+1 << '\n'; } }
#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...