CF737F.Dirty plates
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
你有三个栈s1,s2,s3,其中栈s1中有N个数。现在你有两种操作:
1、将s1中栈顶的c个元素压入s2中,在s2中的顺序与在s1中的顺序相同,需要满足1≤c≤a。
2、将s2中栈顶的c个元素压入s3中,在s3中的顺序与在s2中的顺序相同,需要满足1≤c≤b。
现在,给定N,a,b与s1中元素的初始顺序,问是否存在一种方案,使得使用上面两种操作之后,所有元素都在s3中且s3从栈底到栈顶为一个单调递减的序列。你给出的方案不一定要是最优的。
输入格式
第一行三个正整数N,a,b(1≤N≤2000,1≤a,b≤N),意义如题目所述
接下来一行N个正整数si,从栈顶到栈底描述栈中一个元素的值。保证序列{si}为一个长度为N的排列。
输出格式
如果存在一种方案,第一行输出Yes,接下来一行一个正整数K表示你给出的方案中的操作次数,接下来K行每行两个整数t,c,若t=1,表示将s1中栈顶的c个元素压入s2中,若t=2表示将s2中栈顶的c个元素压入s3中。如果没有方案满足条件,只需输出一行No。
输入输出样例
输入#1
6 2 3 2 3 6 4 1 5
输出#1
YES 8 1 2 1 1 2 1 1 2 1 1 2 1 2 1 2 3
输入#2
7 7 7 1 2 3 4 5 6 7
输出#2
YES 2 1 7 2 7
输入#3
7 1 1 1 2 3 4 5 6 7
输出#3
YES 14 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1
输入#4
4 2 2 3 2 1 4
输出#4
NO
输入解题思路,AI测评打分。不知道怎么写?