// セグメントツリーをたどる T prop(int l, int r, T v, int a, int b, int k=1){ // 今いるノードの値を確定させる propLazy(a, b, k); // たどる NODE nd; // 結果保存用(範囲外の場合は初期値が返る) if( l <= a && b <= r ){ // 完全に範囲内の場合 propLazy(a, b, k, v); return data[k].v; }else if( l < b && a < r ){ // 中途半端に含まれる場合 int m = (a+b) / 2; T vl = prop(l,r,v, a, m, k*2); T vr = prop(l,r,v, m, b, k*2+1); data[k].merge( data[k*2].v, data[k*2+1].v ); nd.merge( vl, vr ); } return nd.v; }