2420 - 迎面增长的栈
时间限制 : 1 秒
内存限制 : 128 MB
设有两个栈s1,s2都采用顺序结构存储,并共享一个存储区[0,…,maxsize-1],为了尽量利用空间,减少溢出的可能,可采用栈顶相向、迎面增长的存储方式。试设计一个程序,让两个栈s1和s2共享一个存储空间,现需要分别向两个栈中存储元素请你编程实现。
注意:增长指的是栈中元素数量增长,不需要对元素大小进行排序。
输入
第一行包含三个正整数maxsize、n和m,第一个正整数maxsize,表示共享栈存储区域的大小,要求输入的共享栈的空间足够大,即maxsize≥n+m;第二个正整数n表示栈s1中需要进栈元素的数量;第三个正整数m表示栈s2中需要进栈元素的数量。
第二行n个正整数,表示s1中需要入栈的元素;
第三行m个正整数,表示s2中需要入栈的元素。
第四行包含两个正整数a和b,a表示s1中需要出栈的元素个数,b表示s2中需要出栈的元素个数。
注意:两个正整数之间用正整数隔开。
输出
四行数据,第一行为栈s1中依次出栈的元素,第二行为栈s2中依次出栈的元素,第三行为出栈后栈s1中从栈顶到栈底所有元素,第二行为出栈后栈s2中从栈顶到栈底所有元素。
注意:元素之间用空格隔开。如果需要出栈或栈中的元素个数为0,则输出no。
样例
输入
10 5 5 0 1 1 2 1 1 8 4 3 7 1 2
输出
1 7 3 2 1 1 0 4 8 1
提示
【数据范围】
对于所有的maxsize,a,b,满足10≤maxsize≤100000,0≤a≤n,0≤a≤m。