int segtree::seg_len(int t,int l0,int r0,int l,int r){ if (cnt[t]||(l0==l&&r0==r)) return len[t]; else{ int m0=(l0+r0)>>1,ret=0; if (l<m0) ret+=seg_len(t+t,l0,m0,l,m0<r?m0:r); if (r>m0) ret+=seg_len(t+t+1,m0,r0,m0>l?m0:l,r); return ret; } }
int main(){ double x[5]={0,2,3,4,6}; double y[5]={1,2,2,1,1}; double polyline_len=0; int i; for(i=0;i<4;i++){ //注意循环4次,对应4条折线 polyline_len+=seg_len(x[i], y[i], x[i+1], y[i+1]); } printf("polyline length = %f\n",polyline_len); return 0; }