Submission details
Task:Dynamic Range Minimum Queries
Sender:aalto26dm_031
Submission time:2026-09-21 19:56:50 +0300
Language:C++ (C++20)
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.00 sdetails
#2ACCEPTED0.48 sdetails

Compiler report

input/code.cpp: In function 'int query(int, int)':
input/code.cpp:21:20: warning: overflow in conversion from 'double' to 'int' changes value from '1.0e+10' to '2147483647' [-Woverflow]
   21 |     int curr_min = 10e9;
      |                    ^~~~

Code

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int n, q;
vector<int> tree;

//query=1
void update(int k, int u) {
    k += n;
    tree[k] = u;
    for (k /= 2; k >= 1; k /= 2) {
        tree[k] = min(tree[2*k], tree[2*k+1]);
    }
}

//query=2
int query(int a, int b) {
    a += n; b += n;
    int curr_min = 10e9;
    while (a <= b) {
        if (a % 2 == 1) curr_min = min(curr_min, tree[a++]);
        if (b % 2 == 0) curr_min = min(curr_min, tree[b--]);
        a /= 2; b /= 2;
    }
    return curr_min;
}

int main() {
    cin >> n >> q;
    //size 2*n array works for iterative segment trees
    vector<int> arr(n);
    for (int i = 0; i < n; i++) {
        cin >> arr[i];
    }

    tree.resize(2 * n);

    for (int i = 0; i < n; i++) {
        tree[n + i] = arr[i];
    }

    for (int i = n - 1; i >= 1; i--) {
        tree[i] = min(tree[2 * i], tree[2 * i + 1]);
    }
//queries
    for (int i = 0; i < q; i++) {
        int type;
        cin >> type;
        if (type == 1) {
            int k, u;
            cin >> k >> u;
            k--;
            update(k, u);
        } else if (type == 2) {
            int a, b;
            cin >> a >> b;
            a--; b--;
            cout << query(a, b) << "\n";
        }
    }
    return 0;
}

Test details

Test 1

Verdict: ACCEPTED

input
8 80
7 6 4 6 2 9 4 8
2 1 1
2 1 2
2 1 3
...

correct output
7
6
4
4
2
...

user output
7
6
4
4
2
...

Test 2

Verdict: ACCEPTED

input
200000 200000
398739055 65343131 699208332 3...

correct output
28609
129890
20378
20378
311522
...

user output
28609
129890
20378
20378
311522
...