#include using namespace std; static const int MAXN = 1000001; int lule[MAXN+1]; long long sp[MAXN][21]; long long nd(int L, int R){ int length = R - L + 1; int k = lule[length]; return sp[L][k] & sp[R - (1<> N >> M; for(int i=0; i> arr[i]; } int n; n=N; int kmax = floor(log2(n)); for(int i=0;i= M){ best = mid; low = mid + 1; } else { high = mid - 1; } } if(best >= i){ ans += (best - i + 1); } } cout << ans << "\n"; return 0; }