n tree[p].Max;
103 ? ? if(l <= mid) return query(2*p,l);
104 ? ? else return query(2*p+1,l);
105 }
106 ? ??
107 int main()
108 {
109 ? ? int T,n;
110 ? ? scanf("%d",&T);
111 ? ? while(T--)
112 ? ? {
113 ? ? ? ? scanf("%d",&n);
114 ? ? ? ? tree[1].Max = -1;
115 ? ? ? ? tree[1].Min = 0x7fffffff;
116 ? ? ? ? tree[1].l = 1;
117 ? ? ? ? tree[1].r = n;
118 ? ? ? ? build(1);
119 ? ? ? ? int d;
120 ? ? ? ? for(int i = 1;i <= n;++i)
121 ? ? ? ? {
122 ? ? ? ? ? ? scanf("%d",&d);
123 ? ? ? ? ? ? push(1,i,d);
124 ? ? ? ? }
125 ? ? ? ? int q,t,l,r,x;
126 ? ? ? ? scanf("%d",&q);
127 ? ? ? ? while(q--)
128 ? ? ? ? {
129 ? ? ? ? ? ? scanf("%d%d%d%d",&t,&l,&r,&x);
130 ? ? ? ? ? ? if(t == 1) oper1(1,l,r,x);
131 ? ? ? ? ? ? else oper2(1,l,r,x);
132 ? ? ? ? }
133 ? ? ? ? for(int i = 1;i <= n;++i) ? ?//输出有点不同,PE了好几次,最后也是有空格的?
134 ? ? ? ? printf("%d ",query(1,i));
135 ? ? ? ? puts("");
136 ? ? }
137 ? ? return 0;
138 }