P4991.第2题-栈中熔合
题目内容
给定正整数序列 a1,a2,…,an 和正整数阈值 S。从空栈开始,按顺序将 a1,a2,…,an 依次压入栈中;每次压入新元素后,执行如下熔合过程直至不能继续:若栈顶元素为 x,其下方相邻元素为 y,并且 x+y>S,则将 y 替换为 gcd(x,y) 并移除 x;重复检查直至栈中不存在相邻两元素之和严格大于 S 的相邻对。处理完整个序列后,输出最终栈大小以及自栈底到栈顶的所有元素。
输入描述
第一行包含两个整数 n,S(1≤n≤105,1≤S≤109)。
第二行包含 n 个整数 a1,a2,…,an(1≤ai≤109)。
输出描述
第一行输出栈大小 k,第二行输出 k 个整数(栈底到栈顶)。
样例1
输入
4 5
3 4 2 6
输出
2
1 2