하이퍼 주사위 굴리기
시간 제한2.5초메모리 제한1024 MB
N차원 주사위를 M번 굴린 뒤 주사위 중심과 원점 사이의 제곱 거리를 구합니다.
문제
차원 유클리드 공간에 차원 데카르트 좌표계가 정의되어 있다. 이 좌표계에는 원점을 지나는 좌표축이 개 있다. 이 문제에서 번째 좌표축을 축이라 하고, 값이 커지는 방향을 방향, 값이 작아지는 방향을 방향이라고 한다.
현재 이 공간에는 인 모든 점이 채워져 있다. 편의상 인 부분을 바닥, 인 면을 바닥면이라고 한다. 원점을 중심으로 크기의 주사위가 놓여 있다. 즉 주사위가 차지하는 공간은 이다. 주사위는 차원 도형으로 정의되는 면 개를 가지며, 인 정수 에 대해 방향 면에는 가, 방향 면에는 가 적혀 있다.
명령 개가 주어진다. 모든 명령을 순서대로 수행한 뒤, 원점과 주사위 중심 사이 유클리드 거리의 제곱을 구한다. 각 명령은 이상 이하의 정수 이며, 다음 동작을 뜻한다.
현재 가 적힌 면이 바닥면에 오도록 주사위를 굴린다. 굴리기 전에 가 방향 또는 방향 면에 적혀 있지 않음이 보장된다.
입력
첫 번째 줄에 두 양의 정수 , 이 주어진다. 은 주사위의 차원 수이고, 은 주사위를 굴리는 명령의 수이다. (, )
두 번째 줄에 개의 양의 정수 이 주어진다. 는 번째 명령에 해당하는 정수이다. ()
출력
첫 번째 줄에 모든 명령을 순서대로 수행한 뒤 원점과 주사위 중심 사이 유클리드 거리의 제곱을 정수로 출력한다.
힌트
차원 유클리드 공간의 두 점 , 사이 유클리드 거리의 제곱은 다음과 같다.
주사위를 굴리는 동작의 정확한 정의는 다음과 같다. 가 적힌 주사위 면을 , 바닥에 붙어 있는 주사위 면을 라고 하자. 와 의 교집합 는 차원 도형이다. 가 바닥면에 오도록 주사위를 굴린다는 것은 주사위를 를 기준으로 시계방향 또는 반시계방향으로 도 회전시키는 것을 뜻한다. 이때 회전 방향은 주사위가 바닥으로 들어가지 않는 방향이어야 한다.
주사위를 차원 도형 를 기준으로 도 회전시킨다는 것은 다음을 뜻한다. 주사위 내부의 임의의 점을 라 하자. 를 지나고 와 선형 독립인 공간을 라 하자. 가 차원 도형이므로 는 항상 2차원 무한평면이다. 와 의 교집합을 라 하자. 와 가 선형 독립이므로 는 한 점이다. 평면 안에서 를 를 중심으로 도 회전시킨다. 이 동작을 모든 에 대해 수행하는 것을 주사위를 도 회전시키는 것으로 정의한다.