「SFCOI-4」序列与变换
题号:NC306050
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

\hspace{15pt}sail 不喜欢有规律的东西,所以他定义一个序列 a_1, a_2, \dots, a_n,将其进行第 k 种变换后第 i 个数变成 |a_i-k|,他认为这是很没有规律的。
\hspace{15pt}这天 pleasure 告诉 sail 他发现了这种变换的某种规律。即一个长度为 n 的序列,依次进行第 m, m-1, m-2, \dots, 1, 0 种变换后序列中有很多数会变成 01,但他又不清楚这种规律具体是什么,所以他打算向你求助。
\hspace{15pt}形式化地,有一个长度为 n 的序列,给定 m,使这个序列依次进行第 m, m-1, m-2, \dots, 1, 0 种变换,求出进行最后一次变换后序列中分别有几个 0 和几个 1

输入描述:

\hspace{15pt}第一行输入两个整数 n,m \left(1 \leq n \leq 10^5;\,1 \leq m \leq 10^{18}\right),表示序列长度、要进行的变换类型的最大编号。
\hspace{15pt}第二行输入 n 个整数 a_1, a_2, \dots, a_n \left(1 \leq a_i \leq 10^{18}\right),表示序列的初始值。

输出描述:

\hspace{15pt}在一行上输出两个整数,第一个数表示最终序列中 0 的个数,第二个数表示最终序列中 1 的个数。
示例1

输入

复制
3 6
20 17 24

输出

复制
1 1

说明

\hspace{15pt}在这个样例中,序列变化为:
\hspace{23pt}\bullet\,m 种变换后,序列变为 \{|20-6|, |17-6|, |24-6|\} = \{14, 11, 18\}
\hspace{23pt}\bullet\,m-1 种变换后,序列变为 \{|14-5|, |11-5|, |18-5|\} = \{9, 6, 13\}
\hspace{23pt}\bullet\,m-2 种变换后,序列变为 \{|9-4|, |6-4|, |13-4|\} = \{5, 2, 9\}
\hspace{23pt}\bullet\,m-3 种变换后,序列变为 \{|5-3|, |2-3|, |9-3|\} = \{2, 1, 6\}
\hspace{23pt}\bullet\,m-4 种变换后,序列变为 \{|2-2|, |1-2|, |6-2|\} = \{0, 1, 4\}
\hspace{23pt}\bullet\,m-5 种变换后,序列变为 \{|0-1|, |1-1|, |4-1|\} = \{1, 0, 3\}
\hspace{23pt}\bullet\,m-6 种变换后,序列变为 \{|1-0|, |0-0|, |3-0|\} = \{1, 0, 3\}
\hspace{15pt}最终序列中 0 的个数为 11 的个数为 1
示例2

输入

复制
5 3
16 2 1 4 8

输出

复制
2 1