[BOJ 15442] Vera and Sorting
View as PDF
Submit solution
Assembly, Awk, C, C++, Java, Pascal, Perl, Python, Sed, Text
Points:
4
Time limit:
2.0s
Memory limit:
256M
Problem types
Allowed languages
Vera is very smart and invented a new sorting algorithm. She coded the following Python function to count how many steps her algorithm takes.</p>
def steps(array):
if len(array) == 0:
return 0
pivot = array[0]
count = 0
lesser = []
greater = []
for element in array: ## looks at each element in the array
count += 1
if element < pivot:
lesser.append(element) ## e.g. [1,3].append(5) => [1,3,5]
elif element > pivot:
greater.append(element)
return count + steps(lesser) + steps(greater)
A permutation P is an ordered set of integers P1, P2, · · · , PN , consisting of N distinct positive integers, each of which are at most N. We will call the number N the size of the permutation.
You are given integers N and K.
Help Vera count the number of permutations P of size N such that steps(P) returns the value K. This number could be large, so output it modulo 109 + 7.
입력 형식
The input will be in the format:</p>
N K
Constraints:
- 1 ≤ N ≤ 30
- 1 ≤ K ≤ 900
- N, K are integers
Output one integer, the number of possible permutations, modulo 109 + 7.
예제 입력 1
3 5
예제 출력 1
2
예제 입력 2
5 29
예제 출력 2
0
예제 입력 3
20 100
예제 출력 3
262859528
힌트
For the first example, the 2 valid permutations are 2, 1, 3 and 2, 3, 1.
Comments