Submission #492528

#TimeUsernameProblemLanguageResultExecution timeMemory
492528nadorbWall (IOI14_wall)C++14
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;

int mn[8000001], mx[8000001];

void update(int v, int ql, int qr, int vl, int vr, int val, int sgn){
    if(ql > vr || qr < vl){
        return;
    }
    if(vl <= ql && qr <= vr){
        if(sgn == 2){
            mn[v] = min(mn[v], val);
            mx[v] = min(mx[v], val);
        }
        else{
            mn[v] = max(mx[v], val);
            mx[v] = max(mn[v], val);
        }
        return;
    }
    if(sgn == 2){
        val = max(val, mn[v]);
    }
    else val = min(val, mx[v]);
    int mid = (vl + vr) / 2;
    update(2 * v, ql, min(qr, mid), vl, mid, val, sgn);
    update(2 * v + 1, max(ql, mid + 1), qr, mid + 1, vr, val, sgn);
}


    int l[8000001], r[8000001];
void buildWall(int n, int k, int op[], int left[], int right[], int height, int finalHeight[]){
    for(int i = 0; i <= 8000000; i++){
        mx[i] = 100001;
    }
    for(int i = 0; i < k; i++){
        update(1, left[i], right[i], 1, n, height, op[i]);
    }
    l[1] = 1, r[1] = n;
    for(int v = 1; v <= 8000000; v++){
        if(2 * v <= 8000000){
            mn[2 * v] = max(mn[v], mn[2 * v]);
            mx[2 * v] = min(mx[v], mx[2 * v]);
        }
        if(2 * v + 1 <= 8000000){
            mn[2 * v + 1] = max(mn[v], mn[2 * v + 1]);
            mx[2 * v + 1] = min(mx[v], mx[2 * v + 1]);
        }
        if(v % 2 == 0){
            l[v] = l[v / 2];
            r[v] = (l[v / 2] + r[v / 2]) / 2;
        }
        else{
            l[v] = (l[v / 2] + r[v / 2]) / 2 + 1;
            r[v] = r[v / 2];
        }
        if(l[v] == r[v]){
            finalHeight[l[v]] = mn[v];
        }
    }
}

Compilation message (stderr)

/usr/bin/ld: /tmp/ccUjM7iN.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