33OJ
登录 注册

D. 纸牌游戏

    传统题 文件IO:card 1000ms 1024MiB

纸牌游戏

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

纸牌游戏

题目描述

小 Z 正在玩一种单人纸牌游戏。

他有一叠特制的纸牌,共有 nn 张,从上到下的点数依次为 a1,a2,…,ana_1, a_2, \ldots, a_n。每张牌的点数都是 11 到 mm 之间的整数,且每种点数都出现至少一次。

小 Z 将进行 nn 局相互独立的游戏。每局开始前,他会将所有牌按原顺序放回牌堆,并清空桌面。在第 ii(1≤i≤n1 \le i \le n)局中,他跳过前 i−1i-1 张牌,依次打出第 ii 张到第 nn 张牌,这些牌的点数依次为 ai,ai+1,…,ana_i, a_{i+1}, \ldots, a_n。

桌面上的牌始终从左到右排成一行。打出一张点数为 kk 的牌时:

  • 若桌面上没有点数为 kk 的牌,就将这张牌放在最右端;
  • 否则,收走桌面上点数为 kk 的牌及其右侧的所有牌,再把这张牌放在最右端。被收走的牌在本局中不再使用。

由上述规则可知,任意时刻桌面上同一种点数的牌至多只有一张。

最后一张牌打出后,本局游戏结束。

例如,若桌面上从左到右的牌的点数依次为 1,4,21, 4, 2,则打出一张点数为 33 的牌后,桌面上从左到右的牌的点数依次为 1,4,2,31, 4, 2, 3。接着打出一张点数为 44 的牌时,桌面上原来点数为 44 的牌及其右侧的所有牌(点数依次为 4,2,34, 2, 3)被收走,再把新打出的 44 放在最右端,此时桌面上从左到右的牌的点数依次为 1,41, 4。

你需要帮助小 Z 依次求出,对于每个 i=1,2,…,mi = 1, 2, \ldots, m,在所有 nn 局游戏中,有多少局结束时桌面上留有点数为 ii 的牌。

输入格式

从文件 card.in 中读入数据。

输入的第一行包含两个正整数 n,mn, m,分别表示牌的数量和点数种类数。

输入的第二行包含 nn 个正整数 a1,a2,…,ana_1, a_2, \ldots, a_n,依次表示小 Z 的牌从上到下的点数。

输出格式

输出到文件 card.out 中。

输出一行 mm 个非负整数,其中第 ii(1≤i≤m1 \le i \le m)个整数表示在所有 nn 局游戏中,有多少局结束时桌面上留有点数为 ii 的牌。

4 3
1 2 1 3
3 1 4

样例 1 解释

对于第 11 局游戏,小 Z 依次打出点数为 1,2,1,31, 2, 1, 3 的牌:

  1. 打出第 11 张牌(点数为 11)后,桌面上只有一张点数为 11 的牌;
  2. 打出第 22 张牌(点数为 22)后,桌面上从左到右的牌的点数依次为 1,21, 2;
  3. 打出第 33 张牌(点数为 11)后,先收走桌面上点数为 1,21, 2 的两张牌,再放上新打出的 11,桌面上只有一张点数为 11 的牌;
  4. 打出第 44 张牌(点数为 33)后,桌面上从左到右的牌的点数依次为 1,31, 3。

因此第 11 局游戏结束时,桌面上从左到右的牌的点数依次为 1,31, 3。

对于第 22 局游戏,小 Z 依次打出点数为 2,1,32, 1, 3 的牌,结束时桌面上从左到右的牌的点数依次为 2,1,32, 1, 3。

对于第 33 局游戏,小 Z 依次打出点数为 1,31, 3 的牌,结束时桌面上从左到右的牌的点数依次为 1,31, 3。

对于第 44 局游戏,小 Z 仅打出一张点数为 33 的牌,结束时桌面上只有一张点数为 33 的牌。

因此,在全部 44 局游戏中:

  • 有 33 局游戏结束时,桌面上留有点数为 11 的牌,即第 1,2,31, 2, 3 局;
  • 有 11 局游戏结束时,桌面上留有点数为 22 的牌,即第 22 局;
  • 有 44 局游戏结束时,桌面上留有点数为 33 的牌,即全部 44 局。
2 2
1 2
1 2

样例 2 解释

第 11 局打出 1,21, 2,结束时桌面上有点数为 1,21, 2 的牌;第 22 局只打出 22,结束时桌面上只有点数为 22 的牌。因此点数为 11 的牌出现 11 局,点数为 22 的牌出现 22 局。

样例 3

见 card3.in 与 card3.ans。

数据范围

对于所有测试数据,保证:

  • 2≤n≤5×1052 \le n \le 5 \times 10^5,1≤m≤3×1051 \le m \le 3 \times 10^5;
  • 对于所有 ii(1≤i≤n1 \le i \le n),1≤ai≤m1 \le a_i \le m;
  • 每种点数都出现至少一次,即对于所有 ii(1≤i≤m1 \le i \le m),均存在 jj(1≤j≤n1 \le j \le n)满足 aj=ia_j = i。

特殊性质 A:a1≤a2≤⋯≤ana_1 \le a_2 \le \cdots \le a_n。

特殊性质 B:至多存在 49994999 个 ii(1≤i≤n−11 \le i \le n-1)满足 ai≠ai+1a_i \ne a_{i+1}。

子任务

本题共 25 个测试点,按测试点计分:

测试点 分值 每个测试点 特殊性质
1∼31 \sim 3 1212 44 n≤5n \le 5,m≤2m \le 2
4∼64 \sim 6 n≤500n \le 500,m≤200m \le 200
7∼97 \sim 9 n≤5000n \le 5000,m≤3000m \le 3000,特殊性质 A
10∼1210 \sim 12 n≤5000n \le 5000,m≤3000m \le 3000
13∼1413 \sim 14 88 n≤2×105n \le 2 \times 10^5,m≤2m \le 2
15∼1715 \sim 17 1212 n≤2×105n \le 2 \times 10^5,m≤3000m \le 3000,特殊性质 B
18∼1918 \sim 19 88 n≤2×105n \le 2 \times 10^5,m≤3000m \le 3000
2020 44 n≤2×105n \le 2 \times 10^5,m≤105m \le 10^5,特殊性质 A
21∼2221 \sim 22 88 n≤2×105n \le 2 \times 10^5,m≤105m \le 10^5
23∼2523 \sim 25 1212 n≤5×105n \le 5 \times 10^5,m≤3×105m \le 3 \times 10^5

每个测试点单独评分,全部测试点的得分之和即为本题得分。

CSP-J 2026 批量测试

未参加
状态
已结束
规则
IOI
题目
4
开始于
2026-11-5 0:00
结束于
2026-11-5 2:00
持续时间
2 小时
主持人
参赛人数
1492