Submission #1196357

#TimeUsernameProblemLanguageResultExecution timeMemory
1196357AMel0nWall (IOI14_wall)C++20
Compilation error
0 ms0 KiB
#include "wall.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; #define FOR(i,N) for(int i = 0; i < N; i++) #define all(x) (x).begin(), (x).end() #define F first #define S second const int INF = 1e9+7; int N; vector<int> tree, lazy; void pushdown(int type, int tl, int tr, int i) { if (lazy[i] != -INF) { if (tree[i] < lazy[i] && type == 1) tree[i] = lazy[i]; // add if (tree[i] > lazy[i] && type == 2) tree[i] = lazy[i]; // remove if (tl != tr) { lazy[i*2] = lazy[i]; lazy[i*2+1] = lazy[i]; } lazy[i] = 0; } } void update(int type, int v, int l, int r, int tl = 0, int tr = N-1, int i = 1) { pushdown(type, tl, tr, i); if (l > r) return; if (tl == l && tr == r) { lazy[i] = v; pushdown(tl, tr, i); return; } int tm = (tl + tr) / 2; update(v, l, min(r, tm), tl, tm, i * 2); update(v, max(l, tm + 1), r, tm + 1, tr, i * 2 + 1); tree[i] = max(tree[i * 2], tree[i * 2 + 1]); } int query(int l, int r, int tl = 0, int tr = N-1, int i = 1) { pushdown(-1, tl, tr, i); if (l > r) return -INF; if (tl == l && tr == r) return tree[i]; int tm = (tl + tr) / 2; return max(query(l, min(r, tm), tl, tm, i * 2), query(max(l, tm + 1), r, tm + 1, tr, i * 2 + 1)); } void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]) { N = n; tree.resize(4*N); lazy.resize(4*N); FOR(i,k) { update(op[i], height[i], left[i], right[i]); } FOR(i,n) { finalHeight[i] = query(i,i); } }

Compilation message (stderr)

wall.cpp: In function 'void update(int, int, int, int, int, int, int)':
wall.cpp:33:17: error: too few arguments to function 'void pushdown(int, int, int, int)'
   33 |         pushdown(tl, tr, i);
      |         ~~~~~~~~^~~~~~~~~~~
wall.cpp:16:6: note: declared here
   16 | void pushdown(int type, int tl, int tr, int i) {
      |      ^~~~~~~~