쿼드트리와 비슷한 방식으로 분할정복으로 문제를 풀려고 했으나 재귀함수다 보니 계속해서 시간초과문제가 발생하였다. 그래서 그냥 반복문으로 1,2,3,4분면을 구분하여 문제를 풀었다.
n,row,col=map(int, input().split())
cnt = 0
while n > 1:
size = 2 ** (n-1)
#1사분면에 있다면
if row < size and col >= size:
cnt += pow(size,2)
col -= size
#2사분면에 있다면
elif row >= size and col < size:
cnt += pow(size,2) * 2
row -= size
#3사분면에 있다면
elif row >= size and col >= size:
cnt += pow(size,2) * 3
row -= size
col -= size
n -= 1
# n == 1일때
#1사분면에 있다면
if row == 0 and col == 1:
cnt += 1
#2사분면에 있다면
elif row == 1 and col == 0:
cnt += 2
#3사분면에 있다면
elif row == 1 and col == 1:
cnt += 3
print(cnt)