# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
109954 |
2019-05-08T12:40:47 Z |
DodgeBallMan |
Wall (IOI14_wall) |
C++14 |
|
0 ms |
0 KB |
#include <bits/stdc++.h>
#include "wall.h"
using namespace std;
const int N = 2e6 + 10;
const int inf = 2e9;
int lo[N<<1], hi[N<<1];
void push( int now, int l, int r ) {
if( l == r ) ret[l] = min( hi[now], max( lo[now], ret[l] ) );
else {
hi[now<<1] = max( lo[now], min( hi[now], hi[now<<1] ) ), lo[now<<1] = min( hi[now], max( lo[now], lo[now<<1] ) );
hi[now<<1|1] = max( lo[now], min( hi[now], hi[now<<1|1] ) ), lo[now<<1|1] = min( high[now], max( lo[now], lo[now<<1|1] ) );
}
lo[now] = 0, hi[now] = inf;
return ;
}
void update( int ll, int rr, int f, int t, int l = 1, int r = n, int now = 1 ) {
push( now, f, t );
if( l > rr || r < ll && l > r ) return ;
if( l >= ll && r <= rr ) {
hi[now] = max( f, min( hi[now], t ) ), lo[now] = min( t, max( lo[now], f ) );
return ;
}
int mid = ( l + r ) >> 1;
update( ll, rr, f, t, l, mid, now << 1 ), update( ll, rr, f, t, mid + 1, r, now << 1 | 1 );
return ;
}
void computeans( int l = 1, int r = n, int now = 1 ) {
push( now, l, r );
if( l == r ) return ;
int mid = ( l + r ) >> 1;
computeans( l, mid, now << 1 ), computeans( mid + 1, r, now << 1 | 1 );
return ;
}
void buildWall( int N, int k, int op[], int left[], int right[], int height[], int finalheight[] )
{
fill( hi, hi + 2*N, inf );
for( int i = 0 ; i < k ; i++ ) {
if( op[i] == 1 ) update( left[i] + 1, right[i] + 1, height[i], inf );
else update( left[i] + 1, right[i] + 1, 0, height[i] );
}
computeans();
for( int i = 1 ; i <= n ; i++ ) finalheight[i-1] = ret[i];
return ;
}
Compilation message
wall.cpp: In function 'void push(int, int, int)':
wall.cpp:11:18: error: 'ret' was not declared in this scope
if( l == r ) ret[l] = min( hi[now], max( lo[now], ret[l] ) );
^~~
wall.cpp:11:18: note: suggested alternative: 'getw'
if( l == r ) ret[l] = min( hi[now], max( lo[now], ret[l] ) );
^~~
getw
wall.cpp:14:84: error: 'high' was not declared in this scope
hi[now<<1|1] = max( lo[now], min( hi[now], hi[now<<1|1] ) ), lo[now<<1|1] = min( high[now], max( lo[now], lo[now<<1|1] ) );
^~~~
wall.cpp:14:84: note: suggested alternative: 'hi'
hi[now<<1|1] = max( lo[now], min( hi[now], hi[now<<1|1] ) ), lo[now<<1|1] = min( high[now], max( lo[now], lo[now<<1|1] ) );
^~~~
hi
wall.cpp: At global scope:
wall.cpp:20:63: error: 'n' was not declared in this scope
void update( int ll, int rr, int f, int t, int l = 1, int r = n, int now = 1 ) {
^
wall.cpp: In function 'void update(int, int, int, int, int, int, int)':
wall.cpp:22:26: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
if( l > rr || r < ll && l > r ) return ;
~~~~~~~^~~~~~~~
wall.cpp: At global scope:
wall.cpp:32:37: error: 'n' was not declared in this scope
void computeans( int l = 1, int r = n, int now = 1 ) {
^
wall.cpp: In function 'void buildWall(int, int, int*, int*, int*, int*, int*)':
wall.cpp:48:27: error: 'n' was not declared in this scope
for( int i = 1 ; i <= n ; i++ ) finalheight[i-1] = ret[i];
^
wall.cpp:48:56: error: 'ret' was not declared in this scope
for( int i = 1 ; i <= n ; i++ ) finalheight[i-1] = ret[i];
^~~
wall.cpp:48:56: note: suggested alternative: 'left'
for( int i = 1 ; i <= n ; i++ ) finalheight[i-1] = ret[i];
^~~
left