Submission #1290574

#TimeUsernameProblemLanguageResultExecution timeMemory
1290574hamza_28Deda (COCI17_deda)C++20
80 / 140
1096 ms4644 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; const int N = 2e5 + 3, inf = 1e9 + 9; struct ST { #define lc (n << 1) #define rc ((n << 1) + 1) int t[4 * N]; ST() { memset(t, 0, sizeof t); } inline void pull(int n) { t[n] = min(t[lc], t[rc]); } void build(int n, int b, int e) { if (b == e) { t[n] = inf; return; } int mid = (b + e) >> 1; build(lc, b, mid); build(rc, mid + 1, e); pull(n); } void upd(int n, int b, int e, int i, int val) { if (i < b || e < i) return; if (b == e) { t[n] = val; return; } int mid = (b + e) >> 1; upd(lc, b, mid, i, val); upd(rc, mid + 1, e, i, val); pull(n); } int query(int n, int b, int e, int i, int val) { if (t[n] > val || e < i) return inf; if (b == e) { return b; } int mid = (b + e) >> 1; return min(query(lc, b, mid, i, val), query(rc, mid + 1, e, i, val)); } }t; void solve() { int n, m; cin >> n >> m; t.build(1, 1, n); while (m--) { char c; int x, y; cin >> c >> x >> y; if (c == 'M') { t.upd(1, 1, n, y, x); } else { int ans = t.query(1, 1, n, y, x); if (ans == inf) ans = -1; cout << ans << '\n'; } } } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int t = 1; // cin >> t; while (t--) { solve(); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...