(r-l+1)); int mid; if(flag) mid = r-y; else mid = l+y-1; int ll = mid-l+1; int rr = r-mid; if(ll<=rr){ for(i=l; i<=mid; ++i) ADD(2*mid+1-i, s[i]); l = mid+1; } else{ for(i=mid+1; i<=r; ++i) ADD(2*mid+1-i, s[i]); r = mid; } flag ^= fg; //标记,如果左边长,那么就向左叠,并且从右向左读; //如果左边短,那么就向右叠,并且从左向右读。 } else{ scanf(%d%d, &y,&z); if(flag) printf(%d , getsum(r-y)-getsum(r-z)); else printf(%d , getsum(l+z-1)-getsum(l+y-1)); } } return 0; }
?