# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
147271 |
2019-08-28T16:17:51 Z |
Kamisama |
Wall (IOI14_wall) |
C++14 |
|
1975 ms |
132416 KB |
#include <bits/stdc++.h>
#include "wall.h"
#define CL(x) (x<<1)
#define CR(x) (x<<1|1)
using namespace std;
const int maxn=2e6+7;
const int inf=1e9+7;
class SegmentTree{
private:
int low,high,mn,mx,pos,l[4*maxn],r[4*maxn];
struct Nodes{
int min,max;
inline Nodes(int _min=0, int _max=0){
tie(min,max)=tie(_min,_max);
}
}it[4*maxn];
public:
inline void Combine(const int &x){
it[x].min=min(it[CL(x)].min,it[CR(x)].min);
it[x].max=max(it[CL(x)].max,it[CR(x)].max);
}
inline void Build(const int &x, const int &low, const int &high){
l[x]=low; r[x]=high;
if(low==high) it[x]=Nodes(0,0);
else{
int mid=(low+high)>>1;
Build(CL(x),low,mid);
Build(CR(x),mid+1,high);
Combine(x);
}
}
inline void Modify(const int &x, const int &mn, const int &mx){
if(it[x].min>mx) it[x].min=it[x].max=mx;
else if(it[x].max<mn) it[x].min=it[x].max=mn;
else{
it[x].min=max(it[x].min,mn);
it[x].max=min(it[x].max,mx);
}
}
inline void PushDown(const int &x){
if(x!=1) Modify(x,it[x>>1].min,it[x>>1].max);
}
inline void Update(const int &x){
PushDown(x);
if(l[x]>high || r[x]<low) return;
if(low<=l[x] && r[x]<=high) Modify(x,mn,mx);
else{
Update(CL(x));
Update(CR(x));
Combine(x);
}
}
inline void Update(const int &i, const int &j, const int &min, const int &max){
tie(low,high,mn,mx)=tie(i,j,min,max);
Update(1);
}
inline int Query(const int &x){
if(l[x]>pos || r[x]<pos) return inf;
PushDown(x);
if(l[x]==r[x]) return it[x].min;
return min(Query(CL(x)),Query(CR(x)));
}
inline int Get(const int &x){
return pos=x,Query(1);
}
}seg_tree;
int n,k;
int op[maxn],left[maxn],right[maxn],height[maxn],finalHeight[maxn];
void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]){
seg_tree.Build(1,0,n-1);
for(int i=0;i<k;i++){
if(op[i]==1) seg_tree.Update(left[i],right[i],height[i],inf);
else seg_tree.Update(left[i],right[i],0,height[i]);
}
for(int i=0;i<n;i++) finalHeight[i]=seg_tree.Get(i);
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
57 ms |
62968 KB |
Output is correct |
2 |
Correct |
59 ms |
63216 KB |
Output is correct |
3 |
Correct |
59 ms |
63096 KB |
Output is correct |
4 |
Correct |
69 ms |
63480 KB |
Output is correct |
5 |
Correct |
67 ms |
63468 KB |
Output is correct |
6 |
Correct |
65 ms |
63480 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
56 ms |
62968 KB |
Output is correct |
2 |
Correct |
226 ms |
76668 KB |
Output is correct |
3 |
Correct |
376 ms |
70756 KB |
Output is correct |
4 |
Correct |
1038 ms |
77460 KB |
Output is correct |
5 |
Correct |
600 ms |
84188 KB |
Output is correct |
6 |
Correct |
573 ms |
82808 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
81 ms |
62964 KB |
Output is correct |
2 |
Correct |
59 ms |
63224 KB |
Output is correct |
3 |
Correct |
59 ms |
63096 KB |
Output is correct |
4 |
Correct |
70 ms |
63608 KB |
Output is correct |
5 |
Correct |
66 ms |
63480 KB |
Output is correct |
6 |
Correct |
66 ms |
63460 KB |
Output is correct |
7 |
Correct |
57 ms |
62940 KB |
Output is correct |
8 |
Correct |
226 ms |
76664 KB |
Output is correct |
9 |
Correct |
367 ms |
70648 KB |
Output is correct |
10 |
Correct |
1030 ms |
83064 KB |
Output is correct |
11 |
Correct |
583 ms |
84208 KB |
Output is correct |
12 |
Correct |
571 ms |
82776 KB |
Output is correct |
13 |
Correct |
56 ms |
62968 KB |
Output is correct |
14 |
Correct |
228 ms |
76664 KB |
Output is correct |
15 |
Correct |
114 ms |
64728 KB |
Output is correct |
16 |
Correct |
1137 ms |
83360 KB |
Output is correct |
17 |
Correct |
586 ms |
82860 KB |
Output is correct |
18 |
Correct |
580 ms |
82820 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
57 ms |
63124 KB |
Output is correct |
2 |
Correct |
58 ms |
63068 KB |
Output is correct |
3 |
Correct |
59 ms |
63024 KB |
Output is correct |
4 |
Correct |
71 ms |
63480 KB |
Output is correct |
5 |
Correct |
66 ms |
63480 KB |
Output is correct |
6 |
Correct |
65 ms |
63496 KB |
Output is correct |
7 |
Correct |
56 ms |
62956 KB |
Output is correct |
8 |
Correct |
225 ms |
76640 KB |
Output is correct |
9 |
Correct |
374 ms |
70748 KB |
Output is correct |
10 |
Correct |
1022 ms |
83064 KB |
Output is correct |
11 |
Correct |
579 ms |
84180 KB |
Output is correct |
12 |
Correct |
571 ms |
82568 KB |
Output is correct |
13 |
Correct |
57 ms |
62968 KB |
Output is correct |
14 |
Correct |
228 ms |
76544 KB |
Output is correct |
15 |
Correct |
115 ms |
64632 KB |
Output is correct |
16 |
Correct |
1149 ms |
83412 KB |
Output is correct |
17 |
Correct |
590 ms |
82808 KB |
Output is correct |
18 |
Correct |
580 ms |
82816 KB |
Output is correct |
19 |
Correct |
1975 ms |
132296 KB |
Output is correct |
20 |
Correct |
1936 ms |
129784 KB |
Output is correct |
21 |
Correct |
1945 ms |
132416 KB |
Output is correct |
22 |
Correct |
1933 ms |
129760 KB |
Output is correct |
23 |
Correct |
1930 ms |
130040 KB |
Output is correct |
24 |
Correct |
1935 ms |
129724 KB |
Output is correct |
25 |
Correct |
1943 ms |
129692 KB |
Output is correct |
26 |
Correct |
1953 ms |
132300 KB |
Output is correct |
27 |
Correct |
1937 ms |
132204 KB |
Output is correct |
28 |
Correct |
1937 ms |
129784 KB |
Output is correct |
29 |
Correct |
1939 ms |
129784 KB |
Output is correct |
30 |
Correct |
1942 ms |
129784 KB |
Output is correct |