$N$ 个人均匀地围坐在一个圆桌上,其中 $N$ 是偶数。
座位顺时针依次编号为 $1 \sim N$。
每个人头上都带着一个帽子,帽子上有一个数字。
第 $i$ 个座位上的人的帽子编号为 $H_{i}$。
每个人都看着自己正对面(直径对面)的人。
计算一共有多少人满足:自己正对面的人戴的帽子的编号和自己戴的帽子的编号相同。
输入格式
第一行包含整数 $N$。
接下来 $N$ 行,其中第 $i$ 行包含 $H_i$。
输出格式
一个整数,表示自己正对面的人戴的帽子的编号和自己戴的帽子的编号相同的人。
数据范围
$2 \leq N \leq 10^{6}$
$0 \leq H_{i} \leq 2 \times 10^{6}$
输入样例 1
4
0
1
0
1
输出样例 1
4
输入样例 2
4
1
0
0
1
输出样例 2
0
直径两边的人座位号之差为 $\displaystyle \frac{N}{2}$。因此,对于座位号 $\displaystyle i \in [1, \frac{N}{2}]$,其对面的人的座位号为 $\displaystyle i + \frac{N}{2}$。
枚举第 $1$ 个人到第 $\displaystyle \frac{N}{2} - 1$ 个人,并判断 $H \left[ i \right]$ 和 $\displaystyle H \left[ i + \frac{N}{2} \right]$ 是否相等。如果相等,则有 $2$ 个人的对面的人戴的帽子的编号和自己戴的帽子的编号相同。
for (int i = 1; i <= n / 2; i++)
{
if (h[i] == h[i + n / 2])
{
res += 2;
}
}
C++:
#include <iostream>
using namespace std;
const int N = 1e6 + 10;
int n;
int h[N];
int res;
int main()
{
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> h[i];
}
for (int i = 1; i <= n / 2; i++)
{
if (h[i] == h[i + n / 2])
{
res += 2;
}
}
cout << res << endl;
return 0;
}