Submission #1322734

#TimeUsernameProblemLanguageResultExecution timeMemory
1322734lucas110550Obstacles for a Llama (IOI25_obstacles)C++20
Compilation error
0 ms0 KiB
#include <vector>
#include <algorithm>
#include <iostream>
#include <climits>

using namespace std;

struct SegTree {
    int n;
    vector<int> tree;

    void init(const vector<int>& data) {
        n = data.size();
        tree.assign(2 * n, 0);
        for (int i = 0; i < n; i++) tree[n + i] = data[i];
        for (int i = n - 1; i > 0; i--) tree[i] = max(tree[2 * i], tree[2 * i + 1]);
    }

    int query(int l, int r) {
        int res = -1;
        for (l += n, r += n; l <= r; l /= 2, r /= 2) {
            if (l % 2 == 1) res = max(res, tree[l++]);
            if (r % 2 == 0) res = max(res, tree[r--]);
        }
        return res;
    }
};

void solve() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int N, M, Q;
    if (!(cin >> N >> M >> Q)) return;

    vector<int> T(N);
    for (int i = 0; i < N; i++) cin >> T[i];

    vector<int> H(M);
    for (int i = 0; i < M; i++) cin >> H[i];

    int min_H = 2e9; 
    for (int h : H) min_H = min(min_H, h);

    int max_reachable_T = -1;
    
    for (int i = 0; i < N; i++) {
        if (T[i] <= min_H) {
            break; 
        }
        max_reachable_T = max(max_reachable_T, T[i]);
    }
    
    SegTree st;
    st.init(H);

    // 4. 处理查询
    for (int i = 0; i < Q; i++) {
        int L, R, S, D;
        cin >> L >> R >> S >> D; 

        if (S > D) swap(S, D);

        int path_obstacle = st.query(S, D);

        if (max_reachable_T > path_obstacle) {
            cout << "1\n";
        } else {
            cout << "0\n";
        }
    }
}

int main() {
    solve();
    return 0;
}

Compilation message (stderr)

/usr/bin/ld: /tmp/ccVpwc9h.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/cchNrJvv.o:obstacles.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccVpwc9h.o: in function `main':
grader.cpp:(.text.startup+0x38f): undefined reference to `initialize(std::vector<int, std::allocator<int> >, std::vector<int, std::allocator<int> >)'
/usr/bin/ld: grader.cpp:(.text.startup+0x3e2): undefined reference to `can_reach(int, int, int, int)'
collect2: error: ld returned 1 exit status