답안 #162008

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
162008 2019-11-05T18:05:01 Z DS007 Deda (COCI17_deda) C++14
0 / 140
101 ms 6648 KB
#include <bits/stdc++.h>
using namespace std;

const int N = 2e5;
const int M = 1e9 + 1;
#define child 2 * v;

int t[4 * N];
int n, q;

void update(int v, int tl, int tr, int a, int x) {
    if (a == tl && tl == tr) {
        t[v] = x;
    } else {
        int tm = (tl + tr) / 2;
        if (a <= tm)
            update(v * 2, tl, tm, a, x);
        else
            update(v * 2 + 1, tm + 1, tr, a, x);
        t[v] = min(t[v * 2], t[v * 2 + 1]);
    }
}

int query(int v, int tl, int tr, int l, int r, int y) {
    if (l == tl && r == tr && l == r)
        return l;

    int tm = (tl + tr) / 2, a = -2, b = -2;
    if (t[v * 2] <= y && l <= tm)
        a = query(v * 2, tl, tm, l, min(tm, r), y);
    if (a != -2 && t[v * 2 + 1] <= y && r > tm)
        b = query(v * 2 + 1, tm + 1, tr, max(l, tm + 1), r, y);

    return a == -2 ? b : (b == -2 ? a : min(a, b));
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    fill(t, t + 4 * N, M);
    cin >> n >> q;

    for (int i = 0; i < q; i++) {
        char m;
        int x, a;
        cin >> m >> x >> a;

        if (m == 'M')
            update(1, 0, n - 1, a - 1, x);
        else
            cout << query(1, 0, n - 1, a - 1, n - 1, x) + 1 << "\n";
    }
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 3448 KB Output isn't correct
2 Incorrect 5 ms 3448 KB Output isn't correct
3 Incorrect 6 ms 3448 KB Output isn't correct
4 Incorrect 82 ms 4060 KB Output isn't correct
5 Incorrect 94 ms 6424 KB Output isn't correct
6 Incorrect 101 ms 6520 KB Output isn't correct
7 Incorrect 92 ms 6648 KB Output isn't correct