Submission #387521

#TimeUsernameProblemLanguageResultExecution timeMemory
387521peijarWall (IOI14_wall)C++17
Compilation error
0 ms0 KiB
#include "wall.h"#include <bits/stdc++.h>using namespace std; const int MAXN = 8e6+10;const int INF = 1e9; int segVal[MAXN], lazyMax[MAXN], lazyMin[MAXN];int iDeb[MAXN], iFin[MAXN]; void buildTree(int iNoeud, int li, int ri){ iDeb[iNoeud] = li, iFin[iNoeud] = ri; lazyMax[iNoeud] = 0; lazyMin[iNoeud] = INF; if (li == ri) return; buildTree(2*iNoeud, li, (li+ri)/2); buildTree(2*iNoeud+1, (li+ri)/2+1, ri);} void changeMax(int iNoeud, int val){ lazyMax[iNoeud] = max(lazyMax[iNoeud], val); lazyMin[iNoeud] = max(lazyMin[iNoeud], val);} void changeMin(int iNoeud, int val){ lazyMin[iNoeud] = min(lazyMin[iNoeud], val); lazyMax[iNoeud] = min(lazyMax[iNoeud], val);} void pushDown(int iNoeud){ segVal[iNoeud] = max(segVal[iNoeud], lazyMax[iNoeud]); segVal[iNoeud] = min(segVal[iNoeud], lazyMin[iNoeud]); if (iDeb[iNoeud] < iFin[iNoeud]) { changeMax(2*iNoeud, lazyMax[iNoeud]); changeMin(2*iNoeud, lazyMin[iNoeud]); changeMax(2*iNoeud+1, lazyMax[iNoeud]); changeMin(2*iNoeud+1, lazyMin[iNoeud]); } lazyMax[iNoeud] = 0, lazyMin[iNoeud] = INF;} int getVal(int iNoeud, int pos){ pushDown(iNoeud); if (iDeb[iNoeud] > pos or iFin[iNoeud] < pos) return 0; if (iDeb[iNoeud] == iFin[iNoeud]) return segVal[iNoeud]; return getVal(2*iNoeud, pos) + getVal(2*iNoeud+1, pos);} void update(int iNoeud, int deb, int fin, int op, int val){ pushDown(iNoeud); if (deb > iFin[iNoeud] or fin < iDeb[iNoeud]) return; if (deb <= iDeb[iNoeud] and iFin[iNoeud] <= fin) { if (op==1) lazyMax[iNoeud] = val; else lazyMin[iNoeud] = val; pushDown(iNoeud); return ; } update(2*iNoeud, deb, fin, op, val); update(2*iNoeud+1, deb, fin, op, val);} void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]){ buildTree(1, 0, n-1); for (int i(0); i < k; ++i) update(1, left[i], right[i], op[i], height[i]); for (int i(0); i < n; ++i) finalHeight[i] = getVal(1, i); return;}#include <bits/stdc++.h>using namespace std; const int MAXN = 48e6+10;const int INF = 1e9; int segVal[MAXN], lazyMax[MAXN], lazyMin[MAXN];int iDeb[MAXN], iFin[MAXN]; void buildTree(int iNoeud, int li, int ri){ iDeb[iNoeud] = li, iFin[iNoeud] = ri; lazyMax[iNoeud] = 0; lazyMin[iNoeud] = INF; if (li == ri) return; buildTree(2*iNoeud, li, (li+ri)/2); buildTree(2*iNoeud+1, (li+ri)/2+1, ri);} void changeMax(int iNoeud, int val){ lazyMax[iNoeud] = max(lazyMax[iNoeud], val); lazyMin[iNoeud] = max(lazyMin[iNoeud], val);} void changeMin(int iNoeud, int val){ lazyMin[iNoeud] = min(lazyMin[iNoeud], val); lazyMax[iNoeud] = min(lazyMax[iNoeud], val);} void pushDown(int iNoeud){ segVal[iNoeud] = max(segVal[iNoeud], lazyMax[iNoeud]); segVal[iNoeud] = min(segVal[iNoeud], lazyMin[iNoeud]); if (iDeb[iNoeud] < iFin[iNoeud]) { changeMax(2*iNoeud, lazyMax[iNoeud]); changeMin(2*iNoeud, lazyMin[iNoeud]); changeMax(2*iNoeud+1, lazyMax[iNoeud]); changeMin(2*iNoeud+1, lazyMin[iNoeud]); } lazyMax[iNoeud] = 0, lazyMin[iNoeud] = INF;} int getVal(int iNoeud, int pos){ pushDown(iNoeud); if (iDeb[iNoeud] > pos or iFin[iNoeud] < pos) return 0; if (iDeb[iNoeud] == iFin[iNoeud]) return segVal[iNoeud]; return getVal(2*iNoeud, pos) + getVal(2*iNoeud+1, pos);} void update(int iNoeud, int deb, int fin, int op, int val){ pushDown(iNoeud); if (deb > iFin[iNoeud] or fin < iDeb[iNoeud]) return; if (deb <= iDeb[iNoeud] and iFin[iNoeud] <= fin) { if (op==1) lazyMax[iNoeud] = val; else lazyMin[iNoeud] = val; pushDown(iNoeud); return ; } update(2*iNoeud, deb, fin, op, val); update(2*iNoeud+1, deb, fin, op, val);} void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]){ buildTree(1, 0, n-1); for (int i(0); i < k; ++i) update(1, left[i], right[i], op[i], height[i]); for (int i(0); i < n; ++i) finalHeight[i] = getVal(1, i); return;}#include <bits/stdc++.h>using namespace std; const int MAXN = 48e6+10;const int INF = 1e9; int segVal[MAXN], lazyMax[MAXN], lazyMin[MAXN];int iDeb[MAXN], iFin[MAXN]; void buildTree(int iNoeud, int li, int ri){ iDeb[iNoeud] = li, iFin[iNoeud] = ri; lazyMax[iNoeud] = 0; lazyMin[iNoeud] = INF; if (li == ri) return; buildTree(2*iNoeud, li, (li+ri)/2); buildTree(2*iNoeud+1, (li+ri)/2+1, ri);} void changeMax(int iNoeud, int val){ lazyMax[iNoeud] = max(lazyMax[iNoeud], val); lazyMin[iNoeud] = max(lazyMin[iNoeud], val);} void changeMin(int iNoeud, int val){ lazyMin[iNoeud] = min(lazyMin[iNoeud], val); lazyMax[iNoeud] = min(lazyMax[iNoeud], val);} void pushDown(int iNoeud){ segVal[iNoeud] = max(segVal[iNoeud], lazyMax[iNoeud]); segVal[iNoeud] = min(segVal[iNoeud], lazyMin[iNoeud]); if (iDeb[iNoeud] < iFin[iNoeud]) { changeMax(2*iNoeud, lazyMax[iNoeud]); changeMin(2*iNoeud, lazyMin[iNoeud]); changeMax(2*iNoeud+1, lazyMax[iNoeud]); changeMin(2*iNoeud+1, lazyMin[iNoeud]); } lazyMax[iNoeud] = 0, lazyMin[iNoeud] = INF;} int getVal(int iNoeud, int pos){ pushDown(iNoeud); if (iDeb[iNoeud] > pos or iFin[iNoeud] < pos) return 0; if (iDeb[iNoeud] == iFin[iNoeud]) return segVal[iNoeud]; return getVal(2*iNoeud, pos) + getVal(2*iNoeud+1, pos);} void update(int iNoeud, int deb, int fin, int op, int val){ pushDown(iNoeud); if (deb > iFin[iNoeud] or fin < iDeb[iNoeud]) return; if (deb <= iDeb[iNoeud] and iFin[iNoeud] <= fin) { if (op==1) lazyMax[iNoeud] = val; else lazyMin[iNoeud] = val; pushDown(iNoeud); return ; } update(2*iNoeud, deb, fin, op, val); update(2*iNoeud+1, deb, fin, op, val);} void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]){ buildTree(1, 0, n-1); for (int i(0); i < k; ++i) update(1, left[i], right[i], op[i], height[i]); for (int i(0); i < n; ++i) finalHeight[i] = getVal(1, i); return;}#include <bits/stdc++.h>using namespace std; const int MAXN = 4e6+10;const int INF = 1e9; int segVal[MAXN], lazyMax[MAXN], lazyMin[MAXN];int iDeb[MAXN], iFin[MAXN]; void buildTree(int iNoeud, int li, int ri){ iDeb[iNoeud] = li, iFin[iNoeud] = ri; lazyMax[iNoeud] = 0; lazyMin[iNoeud] = INF; if (li == ri) return; buildTree(2*iNoeud, li, (li+ri)/2); buildTree(2*iNoeud+1, (li+ri)/2+1, ri);} void changeMax(int iNoeud, int val){ lazyMax[iNoeud] = max(lazyMax[iNoeud], val); lazyMin[iNoeud] = max(lazyMin[iNoeud], val);} void changeMin(int iNoeud, int val){ lazyMin[iNoeud] = min(lazyMin[iNoeud], val); lazyMax[iNoeud] = min(lazyMax[iNoeud], val);} void pushDown(int iNoeud){ segVal[iNoeud] = max(segVal[iNoeud], lazyMax[iNoeud]); segVal[iNoeud] = min(segVal[iNoeud], lazyMin[iNoeud]); if (iDeb[iNoeud] < iFin[iNoeud]) { changeMax(2*iNoeud, lazyMax[iNoeud]); changeMin(2*iNoeud, lazyMin[iNoeud]); changeMax(2*iNoeud+1, lazyMax[iNoeud]); changeMin(2*iNoeud+1, lazyMin[iNoeud]); } lazyMax[iNoeud] = 0, lazyMin[iNoeud] = INF;} int getVal(int iNoeud, int pos){ pushDown(iNoeud); if (iDeb[iNoeud] > pos or iFin[iNoeud] < pos) return 0; if (iDeb[iNoeud] == iFin[iNoeud]) return segVal[iNoeud]; return getVal(2*iNoeud, pos) + getVal(2*iNoeud+1, pos);} void update(int iNoeud, int deb, int fin, int op, int val){ pushDown(iNoeud); if (deb > iFin[iNoeud] or fin < iDeb[iNoeud]) return; if (deb <= iDeb[iNoeud] and iFin[iNoeud] <= fin) { if (op==1) lazyMax[iNoeud] = val; else lazyMin[iNoeud] = val; pushDown(iNoeud); return ; } update(2*iNoeud, deb, fin, op, val); update(2*iNoeud+1, deb, fin, op, val);} void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]){ buildTree(1, 0, n-1); for (int i(0); i < k; ++i) update(1, left[i], right[i], op[i], height[i]); for (int i(0); i < n; ++i) finalHeight[i] = getVal(1, i); return;}#include <bits/stdc++.h>using namespace std; const int MAXN = 4e6+10;const int INF = 1e9; int segVal[MAXN], lazyMax[MAXN], lazyMin[MAXN];int iDeb[MAXN], iFin[MAXN]; void buildTree(int iNoeud, int li, int ri){ iDeb[iNoeud] = li, iFin[iNoeud] = ri; lazyMax[iNoeud] = 0; lazyMin[iNoeud] = INF; if (li == ri) return; buildTree(2*iNoeud, li, (li+ri)/2); buildTree(2*iNoeud+1, (li+ri)/2+1, ri);} void changeMax(int iNoeud, int val){ lazyMax[iNoeud] = max(lazyMax[iNoeud], val); lazyMin[iNoeud] = max(lazyMin[iNoeud], val);} void changeMin(int iNoeud, int val){ lazyMin[iNoeud] = min(lazyMin[iNoeud], val); lazyMax[iNoeud] = min(lazyMax[iNoeud], val);} void pushDown(int iNoeud){ segVal[iNoeud] = max(segVal[iNoeud], lazyMax[iNoeud]); segVal[iNoeud] = min(segVal[iNoeud], lazyMin[iNoeud]); if (iDeb[iNoeud] < iFin[iNoeud]) { changeMax(2*iNoeud, lazyMax[iNoeud]); changeMin(2*iNoeud, lazyMin[iNoeud]); changeMax(2*iNoeud+1, lazyMax[iNoeud]); changeMin(2*iNoeud+1, lazyMin[iNoeud]); } lazyMax[iNoeud] = 0, lazyMin[iNoeud] = INF;} int getVal(int iNoeud, int pos){ pushDown(iNoeud); if (iDeb[iNoeud] > pos or iFin[iNoeud] < pos) return 0; if (iDeb[iNoeud] == iFin[iNoeud]) return segVal[iNoeud]; return getVal(2*iNoeud, pos) + getVal(2*iNoeud+1, pos);} void update(int iNoeud, int deb, int fin, int op, int val){ pushDown(iNoeud); if (deb > iFin[iNoeud] or fin < iDeb[iNoeud]) return; if (deb <= iDeb[iNoeud] and iFin[iNoeud] <= fin) { if (op==1) lazyMax[iNoeud] = val; else lazyMin[iNoeud] = val; pushDown(iNoeud); return ; } update(2*iNoeud, deb, fin, op, val); update(2*iNoeud+1, deb, fin, op, val);} void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]){ buildTree(1, 0, n-1); for (int i(0); i < k; ++i) update(1, left[i], right[i], op[i], height[i]); for (int i(0); i < n; ++i) finalHeight[i] = getVal(1, i); return;}

Compilation message (stderr)

wall.cpp:1:18: warning: extra tokens at end of #include directive
    1 | #include "wall.h"#include <bits/stdc++.h>using namespace std; const int MAXN = 8e6+10;const int INF = 1e9; int segVal[MAXN], lazyMax[MAXN], lazyMin[MAXN];int iDeb[MAXN], iFin[MAXN]; void buildTree(int iNoeud, int li, int ri){ iDeb[iNoeud] = li, iFin[iNoeud] = ri; lazyMax[iNoeud] = 0; lazyMin[iNoeud] = INF; if (li == ri)  return;  buildTree(2*iNoeud, li, (li+ri)/2); buildTree(2*iNoeud+1, (li+ri)/2+1, ri);} void changeMax(int iNoeud, int val){ lazyMax[iNoeud] = max(lazyMax[iNoeud], val); lazyMin[iNoeud] = max(lazyMin[iNoeud], val);} void changeMin(int iNoeud, int val){ lazyMin[iNoeud] = min(lazyMin[iNoeud], val); lazyMax[iNoeud] = min(lazyMax[iNoeud], val);} void pushDown(int iNoeud){ segVal[iNoeud] = max(segVal[iNoeud], lazyMax[iNoeud]); segVal[iNoeud] = min(segVal[iNoeud], lazyMin[iNoeud]); if (iDeb[iNoeud] < iFin[iNoeud]) {  changeMax(2*iNoeud, lazyMax[iNoeud]);  changeMin(2*iNoeud, lazyMin[iNoeud]);  changeMax(2*iNoeud+1, lazyMax[iNoeud]);  changeMin(2*iNoeud+1, lazyMin[iNoeud]); } lazyMax[iNoeud] = 0, lazyMin[iNoeud] = INF;} int getVal(int iNoeud, int pos){ pushDown(iNoeud); if (iDeb[iNoeud] > pos or iFin[iNoeud] < pos) return 0; if (iDeb[iNoeud] == iFin[iNoeud])  return segVal[iNoeud]; return getVal(2*iNoeud, pos) + getVal(2*iNoeud+1, pos);} void update(int iNoeud, int deb, int fin, int op, int val){ pushDown(iNoeud); if (deb > iFin[iNoeud] or fin < iDeb[iNoeud])  return; if (deb <= iDeb[iNoeud] and iFin[iNoeud] <= fin) {  if (op==1)   lazyMax[iNoeud] = val;  else   lazyMin[iNoeud] = val;  pushDown(iNoeud);  return ; } update(2*iNoeud, deb, fin, op, val); update(2*iNoeud+1, deb, fin, op, val);} void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]){ buildTree(1, 0, n-1); for (int i(0); i < k; ++i)  update(1, left[i], right[i], op[i], height[i]); for (int i(0); i < n; ++i)  finalHeight[i] = getVal(1, i);  return;}#include <bits/stdc++.h>using namespace std; const int MAXN = 48e6+10;const int INF = 1e9; int segVal[MAXN], lazyMax[MAXN], lazyMin[MAXN];int iDeb[MAXN], iFin[MAXN]; void buildTree(int iNoeud, int li, int ri){ iDeb[iNoeud] = li, iFin[iNoeud] = ri; lazyMax[iNoeud] = 0; lazyMin[iNoeud] = INF; if (li == ri)  return;  buildTree(2*iNoeud, li, (li+ri)/2); buildTree(2*iNoeud+1, (li+ri)/2+1, ri);} void changeMax(int iNoeud, int val){ lazyMax[iNoeud] = max(lazyMax[iNoeud], val); lazyMin[iNoeud] = max(lazyMin[iNoeud], val);} void changeMin(int iNoeud, int val){ lazyMin[iNoeud] = min(lazyMin[iNoeud], val); lazyMax[iNoeud] = min(lazyMax[iNoeud], val);} void pushDown(int iNoeud){ segVal[iNoeud] = max(segVal[iNoeud], lazyMax[iNoeud]); segVal[iNoeud] = min(segVal[iNoeud], lazyMin[iNoeud]); if (iDeb[iNoeud] < iFin[iNoeud]) {  changeMax(2*iNoeud, lazyMax[iNoeud]);  changeMin(2*iNoeud, lazyMin[iNoeud]);  changeMax(2*iNoeud+1, lazyMax[iNoeud]);  changeMin(2*iNoeud+1, lazyMin[iNoeud]); } lazyMax[iNoeud] = 0, lazyMin[iNoeud] = INF;} int getVal(int iNoeud, int pos){ pushDown(iNoeud); if (iDeb[iNoeud] > pos or iFin[iNoeud] < pos) return 0; if (iDeb[iNoeud] == iFin[iNoeud])  return segVal[iNoeud]; return getVal(2*iNoeud, pos) + getVal(2*iNoeud+1, pos);} void update(int iNoeud, int deb, int fin, int op, int val){ pushDown(iNoeud); if (deb > iFin[iNoeud] or fin < iDeb[iNoeud])  return; if (deb <= iDeb[iNoeud] and iFin[iNoeud] <= fin) {  if (op==1)   lazyMax[iNoeud] = val;  else   lazyMin[iNoeud] = val;  pushDown(iNoeud);  return ; } update(2*iNoeud, deb, fin, op, val); update(2*iNoeud+1, deb, fin, op, val);} void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]){ buildTree(1, 0, n-1); for (int i(0); i < k; ++i)  update(1, left[i], right[i], op[i], height[i]); for (int i(0); i < n; ++i)  finalHeight[i] = getVal(1, i);  return;}#include <bits/stdc++.h>using namespace std; const int MAXN = 48e6+10;const int INF = 1e9; int segVal[MAXN], lazyMax[MAXN], lazyMin[MAXN];int iDeb[MAXN], iFin[MAXN]; void buildTree(int iNoeud, int li, int ri){ iDeb[iNoeud] = li, iFin[iNoeud] = ri; lazyMax[iNoeud] = 0; lazyMin[iNoeud] = INF; if (li == ri)  return;  buildTree(2*iNoeud, li, (li+ri)/2); buildTree(2*iNoeud+1, (li+ri)/2+1, ri);} void changeMax(int iNoeud, int val){ lazyMax[iNoeud] = max(lazyMax[iNoeud], val); lazyMin[iNoeud] = max(lazyMin[iNoeud], val);} void changeMin(int iNoeud, int val){ lazyMin[iNoeud] = min(lazyMin[iNoeud], val); lazyMax[iNoeud] = min(lazyMax[iNoeud], val);} void pushDown(int iNoeud){ segVal[iNoeud] = max(segVal[iNoeud], lazyMax[iNoeud]); segVal[iNoeud] = min(segVal[iNoeud], lazyMin[iNoeud]); if (iDeb[iNoeud] < iFin[iNoeud]) {  changeMax(2*iNoeud, lazyMax[iNoeud]);  changeMin(2*iNoeud, lazyMin[iNoeud]);  changeMax(2*iNoeud+1, lazyMax[iNoeud]);  changeMin(2*iNoeud+1, lazyMin[iNoeud]); } lazyMax[iNoeud] = 0, lazyMin[iNoeud] = INF;} int getVal(int iNoeud, int pos){ pushDown(iNoeud); if (iDeb[iNoeud] > pos or iFin[iNoeud] < pos) return 0; if (iDeb[iNoeud] == iFin[iNoeud])  return segVal[iNoeud]; return getVal(2*iNoeud, pos) + getVal(2*iNoeud+1, pos);} void update(int iNoeud, int deb, int fin, int op, int val){ pushDown(iNoeud); if (deb > iFin[iNoeud] or fin < iDeb[iNoeud])  return; if (deb <= iDeb[iNoeud] and iFin[iNoeud] <= fin) {  if (op==1)   lazyMax[iNoeud] = val;  else   lazyMin[iNoeud] = val;  pushDown(iNoeud);  return ; } update(2*iNoeud, deb, fin, op, val); update(2*iNoeud+1, deb, fin, op, val);} void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]){ buildTree(1, 0, n-1); for (int i(0); i < k; ++i)  update(1, left[i], right[i], op[i], height[i]); for (int i(0); i < n; ++i)  finalHeight[i] = getVal(1, i);  return;}#include <bits/stdc++.h>using namespace std; const int MAXN = 4e6+10;const int INF = 1e9; int segVal[MAXN], lazyMax[MAXN], lazyMin[MAXN];int iDeb[MAXN], iFin[MAXN]; void buildTree(int iNoeud, int li, int ri){ iDeb[iNoeud] = li, iFin[iNoeud] = ri; lazyMax[iNoeud] = 0; lazyMin[iNoeud] = INF; if (li == ri)  return;  buildTree(2*iNoeud, li, (li+ri)/2); buildTree(2*iNoeud+1, (li+ri)/2+1, ri);} void changeMax(int iNoeud, int val){ lazyMax[iNoeud] = max(lazyMax[iNoeud], val); lazyMin[iNoeud] = max(lazyMin[iNoeud], val);} void changeMin(int iNoeud, int val){ lazyMin[iNoeud] = min(lazyMin[iNoeud], val); lazyMax[iNoeud] = min(lazyMax[iNoeud], val);} void pushDown(int iNoeud){ segVal[iNoeud] = max(segVal[iNoeud], lazyMax[iNoeud]); segVal[iNoeud] = min(segVal[iNoeud], lazyMin[iNoeud]); if (iDeb[iNoeud] < iFin[iNoeud]) {  changeMax(2*iNoeud, lazyMax[iNoeud]);  changeMin(2*iNoeud, lazyMin[iNoeud]);  changeMax(2*iNoeud+1, lazyMax[iNoeud]);  changeMin(2*iNoeud+1, lazyMin[iNoeud]); } lazyMax[iNoeud] = 0, lazyMin[iNoeud] = INF;} int getVal(int iNoeud, int pos){ pushDown(iNoeud); if (iDeb[iNoeud] > pos or iFin[iNoeud] < pos) return 0; if (iDeb[iNoeud] == iFin[iNoeud])  return segVal[iNoeud]; return getVal(2*iNoeud, pos) + getVal(2*iNoeud+1, pos);} void update(int iNoeud, int deb, int fin, int op, int val){ pushDown(iNoeud); if (deb > iFin[iNoeud] or fin < iDeb[iNoeud])  return; if (deb <= iDeb[iNoeud] and iFin[iNoeud] <= fin) {  if (op==1)   lazyMax[iNoeud] = val;  else   lazyMin[iNoeud] = val;  pushDown(iNoeud);  return ; } update(2*iNoeud, deb, fin, op, val); update(2*iNoeud+1, deb, fin, op, val);} void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]){ buildTree(1, 0, n-1); for (int i(0); i < k; ++i)  update(1, left[i], right[i], op[i], height[i]); for (int i(0); i < n; ++i)  finalHeight[i] = getVal(1, i);  return;}#include <bits/stdc++.h>using namespace std; const int MAXN = 4e6+10;const int INF = 1e9; int segVal[MAXN], lazyMax[MAXN], lazyMin[MAXN];int iDeb[MAXN], iFin[MAXN]; void buildTree(int iNoeud, int li, int ri){ iDeb[iNoeud] = li, iFin[iNoeud] = ri; lazyMax[iNoeud] = 0; lazyMin[iNoeud] = INF; if (li == ri)  return;  buildTree(2*iNoeud, li, (li+ri)/2); buildTree(2*iNoeud+1, (li+ri)/2+1, ri);} void changeMax(int iNoeud, int val){ lazyMax[iNoeud] = max(lazyMax[iNoeud], val); lazyMin[iNoeud] = max(lazyMin[iNoeud], val);} void changeMin(int iNoeud, int val){ lazyMin[iNoeud] = min(lazyMin[iNoeud], val); lazyMax[iNoeud] = min(lazyMax[iNoeud], val);} void pushDown(int iNoeud){ segVal[iNoeud] = max(segVal[iNoeud], lazyMax[iNoeud]); segVal[iNoeud] = min(segVal[iNoeud], lazyMin[iNoeud]); if (iDeb[iNoeud] < iFin[iNoeud]) {  changeMax(2*iNoeud, lazyMax[iNoeud]);  changeMin(2*iNoeud, lazyMin[iNoeud]);  changeMax(2*iNoeud+1, lazyMax[iNoeud]);  changeMin(2*iNoeud+1, lazyMin[iNoeud]); } lazyMax[iNoeud] = 0, lazyMin[iNoeud] = INF;} int getVal(int iNoeud, int pos){ pushDown(iNoeud); if (iDeb[iNoeud] > pos or iFin[iNoeud] < pos) return 0; if (iDeb[iNoeud] == iFin[iNoeud])  return segVal[iNoeud]; return getVal(2*iNoeud, pos) + getVal(2*iNoeud+1, pos);} void update(int iNoeud, int deb, int fin, int op, int val){ pushDown(iNoeud); if (deb > iFin[iNoeud] or fin < iDeb[iNoeud])  return; if (deb <= iDeb[iNoeud] and iFin[iNoeud] <= fin) {  if (op==1)   lazyMax[iNoeud] = val;  else   lazyMin[iNoeud] = val;  pushDown(iNoeud);  return ; } update(2*iNoeud, deb, fin, op, val); update(2*iNoeud+1, deb, fin, op, val);} void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]){ buildTree(1, 0, n-1); for (int i(0); i < k; ++i)  update(1, left[i], right[i], op[i], height[i]); for (int i(0); i < n; ++i)  finalHeight[i] = getVal(1, i);  return;}
      |                  ^
/tmp/cc3RekEI.o: In function `main':
grader.cpp:(.text.startup+0x12b): undefined reference to `buildWall(int, int, int*, int*, int*, int*, int*)'
collect2: error: ld returned 1 exit status