제출 #854986

#제출 시각아이디문제언어결과실행 시간메모리
854986thisistotallymyusername벽 (IOI14_wall)C++14
컴파일 에러
0 ms0 KiB
#include <iostream>

using namespace std;

const int N = 2000010, INF = 0x3f3f3f3f;

int n, k;
struct Node {
    int l, r;
    int minv, maxv;
}tr[N * 4];

void lmax(int u, int h) { // Label max
    tr[u].minv = max(tr[u].minv, h);
    tr[u].maxv = max(tr[u].maxv, h);
}

void lmin(int u, int h) { // Label min
    tr[u].minv = min(tr[u].minv, h);
    tr[u].maxv = min(tr[u].maxv, h);
}

void pushup(int u) {
    tr[u].minv = min(tr[2 * u].minv, tr[2 * u + 1].minv);
    tr[u].maxv = min(tr[2 * u].maxv, tr[2 * u + 1].maxv);
}

void pushdown(int u) {
    lmin(2 * u, tr[u].minv);
    lmin(2 * u + 1, tr[u].minv);
    lmax(2 * u, tr[u].maxv);
    lmax(2 * u + 1, tr[u].maxv);

    tr[u].maxv = 0, tr[u].minv = INF;
}

void build(int u, int l, int r) {
    if (l == r) tr[u] = {l, r, INF, 0};
    else {
        tr[u] = {l, r};
        int mid = (l + r) >> 1;
        build(2 * u, l, mid), build(2 * u + 1, mid + 1, r);
        pushup(u);
    }
}

void update(int u, int l, int r, int h, int op) {
    if (tr[u].l >= l && tr[u].r <= r) {
        if (op == 1) {
            return lmax(u, h);
        } else {
            return lmin(u, h);
        }
    }
    pushdown(u);
    int mid = (tr[u].l + tr[u].r) >> 1;
    if (l <= mid) {
        update(2 * u, l, mid, h, op);
    } if (r > mid) {
        update(2 * u + 1, mid + 1, r, h, op);
    }
}

void query(int u, int l, int r) {
    if (l == r) { // Leaf
        printf("%d\n", tr[u].maxv);
        return;
    }
    int mid = (l + r) >> 1;
    pushdown(u);
    query(2 * u, l, mid);
    query(2 * u + 1, mid + 1, r);
}

int main() {
    scanf("%d%d", &n, &k);
    build(1, 1, n);

    for (int i = 1, op, l, r, h; i <= k; i++) {
        scanf("%d%d%d%d", &op, &l, &r, &h);
        update(1, l + 1, r + 1, h, op);
    }
    query(1, 1, n);
    return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

wall.cpp: In function 'int main()':
wall.cpp:76:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   76 |     scanf("%d%d", &n, &k);
      |     ~~~~~^~~~~~~~~~~~~~~~
wall.cpp:80:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   80 |         scanf("%d%d%d%d", &op, &l, &r, &h);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/ld: /tmp/ccIQHtOd.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/cc8Ko4Jh.o:wall.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccIQHtOd.o: in function `main':
grader.cpp:(.text.startup+0x133): undefined reference to `buildWall(int, int, int*, int*, int*, int*, int*)'
collect2: error: ld returned 1 exit status