安全排列
时间限制:1秒 内存限制:256M
【题目描述】
有 \(N\)(\(4\le N\le16\))个不同的整数,其中第 \(i\) 个整数为 \(a_i\)(\(1\le a_i \le 25,000\))。如果把这N个整数排成一列后,相邻的整数之差均超过 \(K\)(\(1\le K \le 3,400\)),那么这个排列是安全的。比如当 \(K=1\) 时,\(3,1,4,2\) 就是安全的;而 \(3,2,4,1\) 不是,因为 \(3\) 和 \(2\) 只差 \(1\)。
现在请你编程计算,给定 \(N,K\),整数:\(a_1,a_2,…,a_N\) 有多少种安全排列?
【输入格式】
第一行为两个用空格分隔的整数 \(N\) 和 \(K\)。
接下来的 \(N+1\) 行,每行一个整数,表示\(a_1,a_2,…,a_N\) 。
【输出格式】
输出一行答案,表示安全排列数量。保证可以使用 64 位整型存下。
【输入输出样例1】
Input
4 1
3
4
2
1
Output
2
【数据限制】
\(20\%\) 的数据满足:\(1≤N≤11\)
\(100\%\) 的数据满足:\(1≤N≤16\)
【来源】
Mr.he