#include <bits/stdc++.h> using namespace std; class Solution { public: vector<int> segTree; vector<int> arr; void build(int p, int l, int r) { if (l == r) { segTree[p] = arr[l]; return; } int mid = (l + r) >> 1; build(p << 1, l, mid); build(p << 1 | 1, mid + 1, r); segTree[p] = min(segTree[p << 1], segTree[p << 1 | 1]); } int query(int p, int l, int r, int ql, int qr) { if (qr < l || ql > r) return INT_MAX; if (ql <= l && r <= qr) return segTree[p]; int mid = (l + r) >> 1; return min( query(p << 1, l, mid, ql, qr), query(p << 1 | 1, mid + 1, r, ql, qr) ); } void update(int p, int l, int r, int pos, int val) { if (l == r) { segTree[p] = val; return; } int mid = (l + r) >> 1; if (pos <= mid) update(p << 1, l, mid, pos, val); else update(p << 1 | 1, mid + 1, r, pos, val); segTree[p] = min(segTree[p << 1], segTree[p << 1 | 1]); } void solve(vector<int>& input) { arr = input; int n = arr.size(); segTree.assign(4 * n, 0); build(1, 0, n - 1); } };
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter