P6891: 电子邮件归档
传统题
1.000s
时间限制
256MB
内存限制
1 提交
1 解决
【题目描述】
【题目描述】
Farmer John
在整理收件箱方面已经落后了。他的屏幕排列方式是,屏幕左侧有一个垂直的文件夹列表,屏幕右侧有一个垂直的电子邮件列表。共有 M
个文件夹,编号为 1…M(1≤M≤1
0^4
)。他的收件箱当前包含 N
封编号为 1…N(1≤N≤10
^5
)的电子邮件;第 i
封电子邮件需要归档到文件夹 fi(1≤fi≤M
)。
FJ
的屏幕有些小,所以他同时只能查看 K(1≤K≤min(N,M)
)个文件夹和 K
封电子邮件。最初,他的屏幕左侧显示文件夹 1…K,右侧显示电子邮件 1…K
。要访问其他文件夹和电子邮件,他需要滚动相应的列表。例如,如果他将文件夹列表向下滚动一个位置,他的屏幕将显示文件夹 2…K+1
,然后再向下滚动一个位置将显示文件夹 3…K+2
。当 FJ
将一封电子邮件拖曳至一个文件夹时,该电子邮件将从电子邮件列表中消失,并且消失的电子邮件之后的电子邮件会向上移动一个位置。例如,如果当前显示的是电子邮件 1,2,3,4,5,然后 FJ
将电子邮件 3 拖曳至其对应的文件夹中,则电子邮件列表现在将显示电子邮件 1,2,4,5,6。FJ
只可以将电子邮件拖曳至其需要归档的文件夹中。
不幸的是,FJ
的鼠标滚轮坏了,所以他只能向下滚动,不能向上滚动。他可以实现类似向上滚动的唯一情况是,他正在查看他的电子邮件列表中的最后 K 封电子邮件,并且他归档了其中的一封。在这种情况下,电子邮件列表将再继续显示尚未归档的最后 K 封电子邮件,实际上使得最上方的电子邮件向上滚动了一个位置。如果剩余少于 K 封电子邮件,则将显示所有电子邮件。
请帮助 FJ
判断是否可能归档他的所有电子邮件。
【
输入格式】
(从终端 /
标准输入读入):
输入的第一行包含 T
(1≤T≤10
),为当前测试用例中的子测试用例数量,所有子测试用例必须全部正确才能通过当前测试用例。以下是 T
个子测试用例。每一个子测试用例的第一行包含 M,N
和 K。第二行包含 f1…fN
。
输入保证所有子测试用例的 M
之和不超过 10^4
,所有子测试用例的 N
之和不超过 10^5
。
【
输出格式】
(输出至终端 /
标准输出):
输出 T
行,每行包含 YES 或 NO,表示对于 T 个子测试用例中的每一个,FJ 是否可以成功归档他的所有电子邮件。
【
输入样例】
:
6
5 5 1
1 2 3 4 5
5 5 1
1 2 3 5 4
5 5 1
1 2 4 5 3
5 5 2
1 2 4 5 3
3 10 2
1 3 2 1 3 2 1 3 2 1
3 10 1
1 3 2 1 3 2 1 3 2 1
【
输出样例】
:
YES
YES
NO
YES
YES
NO
【
测试点性质】
:
测试点 2-10
中,所有子测试用例的 M 之和不超过 10^3
。
测试点 11-12
没有额外限制。