n, m = map(int, input().split())
a = int(input())
arr = []
def res_sum(x1, y1, x2, y2):
if x1 == 1:
if x2 == 1:
return abs(y1 - y2)
if x2 == 2:
return min((y1 + y2 + m), ((2 * n) + m - y1 - y2))
if x2 == 3:
return y1 + y2
if x2 == 4:
return n - y1 + y2
if x1 == 2:
if x2 == 1:
return min((y1 + y2 + m), ((2 * n) + m - y1 - y2))
if x2 == 2:
return abs(y1 - y2)
if x2 == 3:
return y1 + m - y2
if x2 == 4:
return n + m - y1 - y2
if x1 == 3: #서쪽
if x2 == 1: #북
return y1 + y2
if x2 == 2: #남
return m - y1 + y2
if x2 == 3: #서
return abs(y1 - y2)
if x2 == 4: #동
return min((y1 + y2 + n), ((2 * m) + n - y1 - y2))
if x1 == 4: #동
if x2 == 1: #북
return n + y1 - y2 #
if x2 == 2: #남
return m - y2 + n - y1
if x2 == 3: #서
return min((y1 + y2 + n), ((2 * m) + n - y1 - y2))
if x2 == 4: #동
return abs(y1 - y2)
for i in range(a):
b, c = map(int, input().split())
arr.append((b, c))
x, y = map(int, input().split())
res = 0
for i in arr:
res += res_sum(x, y, i[0], i[1])
print(res)
완전 하드코딩했다... 오류찾기가 너무 힘들었다
조건별로 북,남 서,동 일경우에만 시계,반시계 중에
가까운것으로 return을 해주고 아닐경우에는
시계 , 반시계 중에서 가까운곳을 고정해서 return을 해줬다.
하드코딩하는것보다 규칙찾기가 더 귀찮았다..
아무튼 맞았습니다.
시간복잡도로 O(n)으로 끝나서 그냥 하드코딩을 했다.