Problem1400--#6253. 「CodePlus 2017 11 月赛」Yazid 的新生舞会

1400: #6253. 「CodePlus 2017 11 月赛」Yazid 的新生舞会

Time Limit: 4 Sec  Memory Limit: 256 MB
Submit: 1  Solved: 1
[Submit] [Status] [Web Board] [Creator:]

Description

这道题是没有舞伴的 Yazid 用新生舞会的时间出的。


Yazid 有一个长度为 nnn 的序列 AAA,下标从 111nnn。显然地,这个序列共有 n(n+1)2\frac{n\left( n+1\right)}{2}2n(n+1) 个子区间。

对于任意一个子区间 [l,r][l,r][l,r],如果该子区间内的众数在该子区间的出现次数严格大于 r−l+12\frac{r-l+1}{2}2rl+1(即该子区间长度的一半),那么 Yazid 就说这个子区间是「新生舞会的」。

所谓众数,即为该子区间内出现次数最多的数。特别地,如果出现次数最多的数有多个,我们规定值最小的数为众数。

现在,Yazid 想知道,共有多少个子区间是「新生舞会的」。

Input

第一行 222 个用空格隔开的非负整数 n,typen,typen,type,表示序列的长度和数据类型。数据类型的作用将在「子任务」中说明。

第二行 nnn 个用空格隔开的非负整数,依次为 A1,A2,,An,描述这个序列。

Output

输出一行一个整数,表示答案。

Sample Input Copy

5 0
1 1 2 2 3

Sample Output Copy

10

HINT

子任务略,略略略【逃

对于所有数据,保证 1≤n≤5000001 \leq n \leq 5000001n5000000≤Ai≤n−10\leq A_i\leq n-10Ain1


来自 CodePlus 2017 11 月赛,清华大学计算机科学与技术系学生算法与竞赛协会 荣誉出品。
Credit:idea/郑林楷 命题/王聿中 验题/郑林楷
Git Repo:https://git.thusaac.org/publish/CodePlus201711
感谢腾讯公司对此次比赛的支持。

Source/Category