Submission #488488

#TimeUsernameProblemLanguageResultExecution timeMemory
488488SlavicGWall (IOI14_wall)C++17
Compilation error
0 ms0 KiB
#include "wall.h" #include "bits/stdc++.h" using namespace std; #define ll long long #define forn(i,n) for(int i=0;i<n;i++) #define all(v) v.begin(), v.end() #define rall(v) v.rbegin(),v.rend() #define pb push_back #define sz(a) (int)a.size() const int N = 2e5 + 10; struct node{ ll mx; ll mn; ll lazy; }; node t[4 * N]; void push(int i, int l, int r){ if(t[i].lazy == -1)return; t[i].mx = t[i].mn = t[i].lazy; if(l != r){ t[2 * i].lazy = t[2 * i + 1].lazy = t[2 * i].lazy = t[2 * i + 1].lazy = t[i].lazy; } t[i].lazy = -1; } void modif(int i, int l, int r, int tl, int tr, int h, int type){ push(i, l, r); if(l > tr || r < tl)return; if(type == 0 && t[i].mx >= h)return; if(type == 1 && t[i].mn <= h)return; if(l >= tl && r <= tr){ t[i].lazy = h; push(i, l, r); return; } int mid = l + r >> 1; modif(2 * i, l, mid, tl, tr, h, type); modif(2 * i + 1, mid + 1, r, tl, tr, h, type); t[i].mx = max(t[2 * i].mx, t[2 * i + 1].mx); t[i].mn = min(t[2 * i].mn, t[2 * i + 1].mn); } int query(int i, int l, int r, int pos){ push(i, l, r); if(l == r)return t[i].mx; int mid = l + r >> 1; if(pos <= mid){ return query(2 * i, l, mid, pos); }else return query(2 * i + 1, mid + 1, r, pos); } void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]) { finalHeight.assign(n, 0); for(int i = 0;i < 4 * N; ++i){ t[i].lazy = -1, t[i].mn = t[i].mx = 0; } for(int i = 0;i < k; ++i){ int type = op[i], l = left[i], r = right[i], h = height[i]; --type; modif(1, 0, n - 1, 0, n - 1, h, type); } for(int i = 0;i < n; ++ i){ finalHeight[i] = query(1, 0, n - 1, i); } return; } /* void solve() { } int32_t main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); int t = 1; //cin >> t; while(t--) { solve(); } } */

Compilation message (stderr)

wall.cpp: In function 'void push(int, int, int)':
wall.cpp:30:43: warning: operation on 't[((2 * i) + 1)].node::lazy' may be undefined [-Wsequence-point]
   30 |         t[2 * i].lazy = t[2 * i + 1].lazy = t[2 * i].lazy = t[2 * i + 1].lazy = t[i].lazy;
      |                         ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
wall.cpp:30:23: warning: operation on 't[(2 * i)].node::lazy' may be undefined [-Wsequence-point]
   30 |         t[2 * i].lazy = t[2 * i + 1].lazy = t[2 * i].lazy = t[2 * i + 1].lazy = t[i].lazy;
      |         ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
wall.cpp: In function 'void modif(int, int, int, int, int, int, int)':
wall.cpp:47:17: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   47 |     int mid = l + r >> 1;
      |               ~~^~~
wall.cpp: In function 'int query(int, int, int, int)':
wall.cpp:60:17: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   60 |     int mid = l + r >> 1;
      |               ~~^~~
wall.cpp: In function 'void buildWall(int, int, int*, int*, int*, int*, int*)':
wall.cpp:70:17: error: request for member 'assign' in 'finalHeight', which is of non-class type 'int*'
   70 |     finalHeight.assign(n, 0);
      |                 ^~~~~~
wall.cpp:76:27: warning: unused variable 'l' [-Wunused-variable]
   76 |         int type = op[i], l = left[i], r = right[i], h = height[i];
      |                           ^
wall.cpp:76:40: warning: unused variable 'r' [-Wunused-variable]
   76 |         int type = op[i], l = left[i], r = right[i], h = height[i];
      |                                        ^