void pushdown(int p){
int d1=addmx1[p],d2=addmx2[p];
int b1=addse1[p],b2=addse2[p];
if(mx1[ls(p)]>=mx1[rs(p)]) replace(ls(p),d1,d2,b1,b2);
else replace(ls(p),b1,b2,b1,b2);
if(mx1[rs(p)]>=mx1[ls(p)]) replace(rs(p),d1,d2,b1,b2);
else replace(rs(p),b1,b2,b1,b2);
addmx1[p]=addmx2[p]=addse1[p]=addse2[p]=0;
}
void pushdown(int p){
int d1=addmx1[p],d2=addmx2[p];
int b1=addse1[p],b2=addse2[p];
int tmp=max(mx1[ls(p)],mx1[rs(p)]);
if(mx1[ls(p)]==tmp) replace(ls(p),d1,d2,b1,b2);
else replace(ls(p),b1,b2,b1,b2);
if(mx1[rs(p)]==tmp) replace(rs(p),d1,d2,b1,b2);
else replace(rs(p),b1,b2,b1,b2);
addmx1[p]=addmx2[p]=addse1[p]=addse2[p]=0;
}
这道题的 pushdown 函数用前面那段代码过不了,后面那段能过,这是为什么?