Submission #1214224

#TimeUsernameProblemLanguageResultExecution timeMemory
1214224PenguinsAreCuteTourism (JOI23_tourism)C++17
7 / 100
170 ms2900 KiB
#include <bits/stdc++.h> using namespace std; struct seg { int n; vector<int> v; seg(int _n): n(_n), v(2*_n,0) {} void up(int x, int u) { for(v[x+=n]=u;x>>=1;) v[x]=max(v[x<<1],v[x<<1|1]); } int qry(int l, int r) { int ans = -1e9; for(l+=n,r+=n+1;l<r;l>>=1,r>>=1) { if(l&1) ans=max(ans,v[l++]); if(r&1) ans=max(ans,v[--r]); } return ans; } }; int main() { int n, m, q; cin >> n >> m >> q; for(int i=0,trash;i<2*n-2;i++) cin >> trash; int c[m]; seg minSeg(m), maxSeg(m); for(int i=0;i<m;i++) { cin>>c[i]; minSeg.up(i, -c[i]); maxSeg.up(i, c[i]); } for(int i=0,l,r;i<q;i++) { cin >> l >> r; cout << maxSeg.qry(l-1,r-1) + minSeg.qry(l-1,r-1) + 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...