QOJ.ac

QOJ

時間限制: 1.0 s 記憶體限制: 2048 MB 總分: 100

#17448. 移民

统计

在19世纪和20世纪之交,为了寻找更好的生活条件而移民到北美洲的斯洛伐克人数量,通常估计在50万左右。当时,斯洛伐克民族的人口仅有200多万,这意味着将近四分之一的人口离开了家园。

前往美洲的旅程需要数周时间,通常由大型轮船公司高效地组织,对它们来说,源源不断的移民是主要的收入来源。在汉堡工作的代理人负责将大家庭安置在移民旅馆(“Auswandererhallen”)中,他们很快注意到一个有趣的规律:如果两家人在公共食堂里被安排在按某种规则排列的一组固定餐桌旁,他们就能相处得很好。

如果两家人可以按照以下方式就座,代理人就称这两家人为兼容对(compatible pair):

  • 在每张被使用的餐桌上,第一家人的成员人数都相同,
  • 类似地,在每张被使用的餐桌上,第二家人的成员人数也都相同。

每当登上同一艘船的一组家庭中包含足够数量的兼容家庭对时,负责在各艘船上为家庭分配客舱的代理人就会从公司获得更高的佣金。代理人们非正式地将这样的一组家庭称为聪明组(smart group)。

每个代理人都有一个旅行家庭的名单,按照他们到达旅馆的顺序记录。为了组成登上某艘特定船只的一组家庭,代理人会从名单中选择一个家庭,然后连续选择紧随其后的若干个家庭,不跳过任何家庭。如果选出的连续家庭序列构成了一个“聪明组”,代理人就有资格获得更高的佣金。

当同时有多艘船可用时,代理人通常需要根据名单快速确定可以组成哪些“聪明组”。

代理人使用的确切程序现在已不得而知,但原始的旅行家庭名单被保留了下来。为了评估代理人工作的难度,历史学家希望确定从给定的家庭名单中可以选出多少个不同的“聪明组”。

输入格式

第一行输入包含两个整数 $N, K$ ($1 \le N \le 2 \cdot 10^5$, $1 \le K \le 10^9$),分别表示名单上的家庭数量,以及一个“聪明组”中所需的最少兼容家庭对数。

第二行输入包含一个由 $N$ 个整数组成的序列 $A_1, A_2, \dots, A_N$ ($1 \le A_i \le 5 \cdot 10^5$),这些整数对应名单上每个家庭的成员人数,并保持家庭的原始顺序。

输出格式

输出可以从给定名单中组成的“聪明组”的数量。

样例

输入样例 1

5 1
2 3 4 5 6

输出样例 1

5

输入样例 2

7 4
2 4 6 8 3 81 12

输出样例 2

10

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.