Участник:Kozub/Bee Walk

Материал из DISCOPAL
Перейти к: навигация, поиск

Ссылка на задачу на spojcode: https://www.spoj.com/problems/MBEEWALK/

class Solution():
    def __init__(self):
        self.subsol = dict({(0,0,0) : 1})
        self.moves = (
            (1,1), (-1,1), (1,-1),
            (-1,-1), (0,2), (0,-2)
        )
 
 
    def solve(self, pos):
 
        if 2*pos[0] < abs(pos[1]) + abs(pos[2]):
            return 0
 
        if pos in self.subsol:
            return self.subsol[pos]
        else:
            n,w,h = pos
            n-=1
            res = 0
            for dw, dh in self.moves:
                res += self.solve((n,w+dw,h+dh))
            self.subsol[(n+1,w,h)] = res
            return res
 
solver = Solution()
n = int(input())
for i in range(n):
    print(solver.solve((int(input()),0,0)))