[BOJ 15442] Vera and Sorting

View as PDF

Submit solution

Points: 4
Time limit: 2.0s
Memory limit: 256M

Problem types
Allowed languages
Assembly, Awk, C, C++, Java, Pascal, Perl, Python, Sed, Text

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

There are no comments at the moment.