Submission #1342831

#TimeUsernameProblemLanguageResultExecution timeMemory
1342831qwertzztrewqDeda (COCI17_deda)C++20
140 / 140
61 ms3448 KiB
#include <bits/stdc++.h>
using namespace std;

#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()
#define pb push_back
#define fst first
#define snd second

template <typename t>
using vv = vector<t>;
template <typename a, typename b>
using pp = pair<a, b>;

typedef long long ll;
typedef double db;

const int mod = 1e9 + 7;

vv<int> st;
int s = 1;

int query(int x, int y, int l, int r, int node, int val) {
    if (st[node] > val) return -1;
    if (x > r || y < l) return -1;
    if (l == r) return l;
    int m = (l + r) / 2;
    int a1 = query(x, y, l, m, node * 2, val);
    if (a1 != -1) return a1;
    return query(x, y, m + 1, r, node * 2 + 1, val);
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    int n, q;
    cin >> n >> q;
    while (s < n) s <<= 1;
    st.assign(s << 1, INT_MAX);
    while (q--) {
        char c;
        int i, val;
        cin >> c >> val >> i;
        if (c == 'M') {
            int node = s + i - 1;
            st[node] = val;
            while (node >>= 1) st[node] = min(st[node * 2], st[node * 2 + 1]);
        }
        else cout << query(i, s, 1, s, 1, val) << "\n";
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...