p221.in1
======================
4 4

=================
p221.py
======================
def solve_one_parity(n, k, p):
    per_diag = []
    for i in range(p, n, 2):
        per_diag.append(i + 1)
        if i != n - 1:
            per_diag.append(i + 1)

    dp = [[0] * (k + 1) for _ in range(1 + len(per_diag))]

    dp[0][0] = 1
    for i, v in enumerate(per_diag, 1):
        dp[i][0] = 1
        for j in range(1, min(k, v) + 1):
            dp[i][j] = dp[i - 1][j] + dp[i - 1][j - 1] * (v - j + 1)

    return dp


def solve(n, k):
    if k > 2 * n - 1:
        return 0

    ans = 0
    data_0 = solve_one_parity(n, k, 0)
    data_1 = solve_one_parity(n, k, 1)
    for i in range(0, k + 1):
        ans += data_0[-1][i] * data_1[-1][k - i]

    return ans


n, k = map(int, input().split())
print(solve(n, k))

=================
p221.ans1
======================
260

=================
statement.txt
======================
221. Big Bishops
time limit per test: 0.25 sec.
memory limit per test: 65536 KB
input: standard
output: standard




A bishop is a piece used in the game of chess which is played on a board of square grids. A bishop can only move diagonally from its current position and two bishops attack each other if one is on the path of the other.

Given two numbers n and k, your job is to determine the number of ways one can put k bishops on an n × n chessboard so that no two of them are in attacking positions.

Input

The input file contains two integers n (1 ≤ n ≤ 50) and k (0 ≤ k ≤ n2).

Output

Print a line containing the total number of ways one can put the given number of bishops on a chessboard of the given size so that no two of them are in attacking positions.

Sample test(s)

Input
Test #1

4 4

Test #2

8 6

Output
Test #1

260

Test #2

5599888
Author:	Andrew Stankevich
Resource:	Little Chess Pieces Series, SPb IFMO 2003-2004 Authumn Training Sessions
Date:	2003-09-27

=================
