for( int i = 2; i <= n - 1; ++ i ) { ll dif1 = a[i].val - a[i-1].val; ll dif2 = a[i+1].val - a[i].val; if( dif1 <= dif2 ) add( a[i].id, a[i-1].id ); if( dif2 <= dif1 ) add( a[i].id, a[i+1].id ); }
sort( segs.begin( ), segs.end( ) );
for( int i = 1; i <= m; ++ i ) { int l = read( ), r = read( ); qs[i] = { l, r, i }; }
sort( qs + 1, qs + m + 1 );
bit.init( n ); int cur = 0; for( int i = 1; i <= m; ++ i ) { auto [l, r, idx] = qs[i]; while( cur < (int)segs.size( ) && segs[cur].r <= r ) { bit.add( segs[cur].l, 1 ); cur ++; } ans[idx] = bit.ask( l, r ); }
ll sum = 0; for( int i = 1; i <= m; ++ i ) sum += ans[i] * i; cout << sum << '\n'; }