제출 #683501

#제출 시각아이디문제언어결과실행 시간메모리
683501speedyArdaWall (IOI14_wall)C++14
컴파일 에러
0 ms0 KiB
#include "bits/stdc++.h"
using namespace std;
const int MAXN = 2e6 + 5;
const int inf = 1e9 + 7;
 
struct Node {
    int mx = inf;
    int mn = 0;
} 
seg[MAXN * 4];
 
void push(int v)
{
    seg[2 * v].mn = min(seg[v].mx, max(seg[v * 2].mn, seg[v].mn));
    seg[2 * v].mx = max(seg[v].mn, min(seg[2 * v].mx, seg[v].mx));
    seg[2 * v + 1].mn = min(seg[v].mx, max(seg[v * 2 + 1].mn, seg[v].mn));
    seg[2 * v + 1].mx = max(seg[v].mn, min(seg[2 * v + 1].mx, seg[v].mx));
    seg[v].mn = 0;
    seg[v].mx = inf;
}

void update(int v, int tl, int tr, int l, int r, int val, int type)
{
    if(l > r)
        return;
    if(l <= tl && r >= tr)
    {
        if(type == 1)
        {
            seg[v].mx = max(seg[v].mx, val);
            seg[v].mn = max(seg[v].mn, val);
        } else 
        {
            seg[v].mx = min(seg[v].mx, val);
            seg[v].mn = min(seg[v].mn, val);
        }
        return;
    }

    push(v);

    int tm = (tl + tr) / 2;
    update(2 * v, tl, tm, l, min(tm, r), val, type);
    update(2 * v + 1, tm + 1, tr, max(l, tm + 1), r, val, type);
}

int get(int v, int tl, int tr, int pos)
{
    if(tl == tr)
        return seg[v].mn;
    push(v);

    int tm = (tl + tr) / 2;
    if(tm >= pos)
        return get(2 * v, tl, tm, pos);
    else
        return get(2 * v + 1, tm + 1, tr, pos);
}
 
 
void buildWall (int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]) {
    for (int i = 0; i < k; i++) {
        update(1, 0, n - 1, left[i], right[i], height[i], op[i]);
    }
    
    for (int i = 0; i < n; i++) {
        finalHeight[i] = get(1, 0, n - 1, i);
    }
}

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

Compilation timeout while compiling wall