CF1609F Interesting Sections

题目描述

![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1609F/37581220fa7958c8fff17f022427b5b4d5e4d291.png)William 有一个非负数数组 $a_1, a_2, \dots, a_n$。他希望你找出有多少个区间 $l \le r$ 能通过检查。检查的方式如下: 1. 在数组的区间 $[l, r]$ 上找到最小值和最大值。 2. 如果最小值和最大值的二进制表示中 $1$ 的个数相同,则认为该区间通过检查。

输入格式

第一行包含一个整数 $n$($1 \le n \le 10^6$),表示数组 $a$ 的长度。 第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($0 \le a_i \le 10^{18}$),表示数组 $a$ 的内容。

输出格式

输出一个整数,表示通过检查的区间总数。

说明/提示

由 ChatGPT 4.1 翻译