Submission #1302253

#TimeUsernameProblemLanguageResultExecution timeMemory
1302253tuncay_pashaDeda (COCI17_deda)C++20
140 / 140
566 ms4556 KiB
#include "bits/stdc++.h" using namespace std; #ifdef debug #include "debug.hpp" #else #define dbg(...) #define dbgx(x) #define line() #endif #define vi vector<int> #define vvi vector<vi> #define pii pair<int, int> #define size(x) (int)(x.size()) struct SegTree { vi st; SegTree(int n) { st.assign(n * 4 + 5, 1e9); } void update(int v, int tl, int tr, int i, int x) { if (tl == tr) { st[v] = x; return; } int tm = (tl + tr) >> 1; if (i <= tm) { update(v * 2, tl, tm, i, x); } else { update(v * 2 + 1, tm + 1, tr, i, x); } st[v] = min(st[v * 2], st[v * 2 + 1]); } int getRange(int v, int tl, int tr, int l, int r) { if (tr < l || r < tl) return 1e9; if (l <= tl && tr <= r) return st[v]; int tm = (tl + tr) >> 1; return min(getRange(v * 2, tl, tm, l, r), getRange(v * 2 + 1, tm + 1, tr, l, r)); } }; void _() { int n, q; cin >> n >> q; SegTree st(n); while (q--) { char c; cin >> c; if (c == 'M') { int i, x; cin >> x >> i; st.update(1, 1, n, i, x); } else { int i, x; cin >> x >> i; int lo = i, hi = n, best = -1; while (lo <= hi) { int mid = (lo + hi) >> 1; if (st.getRange(1, 1, n, i, mid) <= x) { best = mid; hi = mid - 1; } else lo = mid + 1; } cout << best << '\n'; } } } signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); // freopen("in.txt", "r", stdin); int t = 1; // cin >> t; for (int cs = 1; cs <= t; ++cs) { _(); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...