Submission #879255

#TimeUsernameProblemLanguageResultExecution timeMemory
879255marcidWall (IOI14_wall)C++17
100 / 100
560 ms77648 KiB
#include "wall.h" #include <bits/stdc++.h> using namespace std; #define vb vector<bool> #define vi vector<int> #define ii pair<int,int> #define iii tuple<int,int,int> #define vii vector<ii> #define viii vector<iii> #define pb push_back #define eb emplace_back #define mod 1000000007 const int maxn = 1<<21; ii tree[(maxn<<2)+2]; void push(int v) { tree[v<<1].first=min(max(tree[v<<1].first,tree[v].first),tree[v].second); tree[v<<1|1].first=min(max(tree[v<<1|1].first,tree[v].first),tree[v].second); tree[v<<1].second=min(max(tree[v].first,tree[v<<1].second),tree[v].second); tree[v<<1|1].second=min(max(tree[v].first,tree[v<<1|1].second),tree[v].second); } void update(int t, int l, int r, int x, int v, int tl, int tr) { if (tl > r || l > tr) return; if (l <= tl && tr <= r) { if (t-1) { tree[v].first=min(tree[v].first,x); tree[v].second=min(tree[v].second,x); } else { tree[v].first=max(tree[v].first, x); tree[v].second=max(tree[v].second,x); } return; } push(v); int mid = tl + tr >> 1; update(t,l,r,x,v*2,tl,mid); update(t,l,r,x,v*2+1,mid+1,tr); tree[v].first=min(tree[v<<1].first,tree[v<<1|1].first); tree[v].second=max(tree[v<<1].second,tree[v<<1|1].second); } int fin[maxn]; void build(int v, int tl, int tr) { if (tl==tr) { fin[tl]=tree[v].first; return; } push(v); int mid = tl + tr >> 1; build(v*2,tl,mid); build(v*2+1,mid+1,tr); } void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]) { for (int i = 0; i < k; i++) { update(op[i],left[i],right[i],height[i],1,0,n+10); } build(1,0,n+10); for (int i = 0; i < n; i++) finalHeight[i]=fin[i]; }

Compilation message (stderr)

wall.cpp: In function 'void update(int, int, int, int, int, int, int)':
wall.cpp:35:15: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   35 |  int mid = tl + tr >> 1;
      |            ~~~^~~~
wall.cpp: In function 'void build(int, int, int)':
wall.cpp:47:15: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   47 |  int mid = tl + tr >> 1;
      |            ~~~^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...