제출 #1290857

#제출 시각아이디문제언어결과실행 시간메모리
1290857AbdullahIshfaq벽 (IOI14_wall)C++20
100 / 100
359 ms88976 KiB
#include "wall.h" #include <bits/stdc++.h> using namespace std; const int N = 2000005; pair<int, int> seg[4 * N]; void update(int s, int e, int i, int l, int r, int cur, bool op) { cur = max(cur, seg[i].first); cur = min(cur, seg[i].second); if (l > e || r < s) { return; } if (l >= s && r <= e) { if (!op) { seg[i].first = cur; } else { seg[i].second = cur; } return; } int mid = (l + r) / 2; update(s, e, i * 2, l, mid, cur, op); update(s, e, i * 2 + 1, mid + 1, r, cur, op); } void modify(int l, int r, int i, int cur, int *ans) { cur = max(cur, seg[i].first); cur = min(cur, seg[i].second); if (l == r) { ans[l] = cur; return; } int mid = (l + r) / 2; modify(l, mid, i * 2, cur, ans); modify(mid + 1, r, i * 2 + 1, cur, ans); } void buildWall(int n, int k, int op[], int l[], int r[], int h[], int ans[]) { for (int i = 1; i <= 4 * n; i++) { seg[i] = {0, 1e18}; } for (int i = k - 1; i >= 0; i--) { update(l[i], r[i], 1, 0, n - 1, h[i], op[i] - 1); } modify(0, n - 1, 1, 0, ans); return; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...