만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

하이퍼 주사위 굴리기

시간 제한2.5초메모리 제한1024 MB

요약
N차원 주사위를 M번 굴린 뒤 주사위 중심과 원점 사이의 제곱 거리를 구합니다.
난이도

보통10점 중 7점

유형
시뮬레이션, 수학, 구현
정답자
아직 제출이 없습니다

문제

NN차원 유클리드 공간에 NN차원 데카르트 좌표계가 정의되어 있다. 이 좌표계에는 원점을 지나는 좌표축이 NN개 있다. 이 문제에서 ii번째 좌표축을 xix_i축이라 하고, xix_i값이 커지는 방향을 +xi+x_i 방향, xix_i값이 작아지는 방향을 −xi-x_i 방향이라고 한다.

현재 이 공간에는 x1≤−12x_1 \leq -\tfrac{1}{2}인 모든 점이 채워져 있다. 편의상 x1<−12x_1 < -\tfrac{1}{2}인 부분을 바닥, x1=−12x_1 = -\tfrac{1}{2}인 면을 바닥면이라고 한다. 원점을 중심으로 1×1×⋯×11 \times 1 \times \cdots \times 1 크기의 주사위가 놓여 있다. 즉 주사위가 차지하는 공간은 [−12,12]×[−12,12]×⋯×[−12,12][-\tfrac{1}{2}, \tfrac{1}{2}] \times [-\tfrac{1}{2}, \tfrac{1}{2}] \times \cdots \times [-\tfrac{1}{2}, \tfrac{1}{2}]이다. 주사위는 N−1N-1차원 도형으로 정의되는 면 2N2N개를 가지며, 1≤i≤N1 \leq i \leq N인 정수 ii에 대해 +xi+x_i 방향 면에는 2N+1−i2N+1-i가, −xi-x_i 방향 면에는 ii가 적혀 있다.

명령 MM개가 주어진다. 모든 명령을 순서대로 수행한 뒤, 원점과 주사위 중심 사이 유클리드 거리의 제곱을 구한다. 각 명령은 11 이상 2N2N 이하의 정수 vv이며, 다음 동작을 뜻한다.

현재 vv가 적힌 면이 바닥면에 오도록 주사위를 굴린다. 굴리기 전에 vv가 −x1-x_1 방향 또는 +x1+x_1 방향 면에 적혀 있지 않음이 보장된다.

입력

첫 번째 줄에 두 양의 정수 NN, MM이 주어진다. NN은 주사위의 차원 수이고, MM은 주사위를 굴리는 명령의 수이다. (3≤N≤1093 \leq N \leq 10^9, 1≤M≤500 0001 \leq M \leq 500\,000)

두 번째 줄에 MM개의 양의 정수 v1,v2,⋯ ,vMv_1, v_2, \cdots, v_M이 주어진다. viv_i는 ii번째 명령에 해당하는 정수이다. (1≤vi≤2N1 \leq v_i \leq 2N)

출력

첫 번째 줄에 모든 명령을 순서대로 수행한 뒤 원점과 주사위 중심 사이 유클리드 거리의 제곱을 정수로 출력한다.

힌트

NN차원 유클리드 공간의 두 점 (x1,x2,⋯ ,xN)(x_1, x_2, \cdots, x_N), (y1,y2,⋯ ,yN)(y_1, y_2, \cdots, y_N) 사이 유클리드 거리의 제곱은 다음과 같다.

(x1−y1)2+(x2−y2)2+⋯+(xN−yN)2(x_1-y_1)^2 + (x_2-y_2)^2 + \cdots + (x_N-y_N)^2

주사위를 굴리는 동작의 정확한 정의는 다음과 같다. vv가 적힌 주사위 면을 VV, 바닥에 붙어 있는 주사위 면을 WW라고 하자. VV와 WW의 교집합 ZZ는 N−2N-2차원 도형이다. VV가 바닥면에 오도록 주사위를 굴린다는 것은 주사위를 ZZ를 기준으로 시계방향 또는 반시계방향으로 9090도 회전시키는 것을 뜻한다. 이때 회전 방향은 주사위가 바닥으로 들어가지 않는 방향이어야 한다.

주사위를 N−2N-2차원 도형 ZZ를 기준으로 θ\theta도 회전시킨다는 것은 다음을 뜻한다. 주사위 내부의 임의의 점을 xx라 하자. xx를 지나고 ZZ와 선형 독립인 공간을 AA라 하자. ZZ가 N−2N-2차원 도형이므로 AA는 항상 2차원 무한평면이다. AA와 ZZ의 교집합을 yy라 하자. AA와 ZZ가 선형 독립이므로 yy는 한 점이다. 평면 AA 안에서 xx를 yy를 중심으로 θ\theta도 회전시킨다. 이 동작을 모든 xx에 대해 수행하는 것을 주사위를 θ\theta도 회전시키는 것으로 정의한다.

예제1

  1. 예제 1

    입력
    3 6
    2 3 6 5 3 1
    
    예상 출력
    10