Submission #1285198

#TimeUsernameProblemLanguageResultExecution timeMemory
1285198LIAHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++17
0 / 100
3098 ms89276 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define vll vector<ll> #define loop(i, s, e) for (ll i = s; i < e; ++i) #define pll pair<ll, ll> struct Seg { vll seg; ll sz = 1; Seg(ll n) { for (; sz < n; sz <<= 1) ; seg.resize(2 * sz); } void update(ll i, ll v) { i += sz; seg[i] = v; for (i /= 2; i > 0; i /= 2) seg[i] = max(seg[i * 2], seg[i * 2 + 1]); } ll query(ll l, ll r) { ll ans = 0; l += sz, r += sz; while (l <= r) { if (l & 1) ans = max(ans, seg[l++]); if (!(r & 1)) ans = max(ans, seg[r--]); l /= 2; r /= 2; } return ans; } }; int main() { ll n, m; cin >> n >> m; vll w(n); loop(i, 0, n) cin >> w[i]; Seg seg(1e6 + 1); set<pll, greater<pll>> match; loop(i, 0, n) { match.insert({w[i], i}); auto it = match.lower_bound({w[i], i}); ll idx = it->second; seg.update(i, idx); } while (m--) { ll l, r, k; cin >> l >> r >> k; bool ans = 1; l--, r--; ll maxi = seg.query(l, r); if (maxi >= l) { ans = 0; } cout << ans << "\n"; } return 0; }
#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...