在遠古的奧爾托利亞大陸,傳說有一座名為「蛇神之塔」的神殿。
祭司們為了向蛇神祈雨,會舉行一種奇特的 「魔法蛇舞儀式」:
在儀式進行過程中,祭司們可以不斷調整靈蛇節的轉角,或者查詢當前靈蛇在前 $k$ 段之後的末端位置,藉此判斷儀式進展是否成功。
一開始 $\theta_i$ 全部設為 $0^ \circ$。儀式過程中有 $q$ 次操作,分為以下三種:
觀測靈蛇
1 k
— 查詢前 $k$ 段靈蛇節合成之後的末端位置 $(x, y)$。
變更咒文(改變角度)
2 x theta
— 將第 $x$ 段靈蛇節的轉角設為 $\text{theta}^ \circ$,其中 $\text{theta} \in \lbrace 0, 90, 180, 270\rbrace$。
變更咒文(改變長度)
3 x len
— 將第 $x$ 段靈蛇節的長度改為 $\text{len}$,其中 $\text{len}$ 為正整數。
換句話說,你需要計算從原點出發,按照前 $k$ 段當前設定的旋轉和平移,最終位置會到哪裡。
輸入的第一行包含兩個正整數 $n$、$q$,代表靈蛇節的數量和操作的次數。
第二行包含 $n$ 個正整數 $L_1, L_2, \ldots, L_n$,代表每段靈蛇節的長度。
接下來的 $q$ 行,每行包含一個操作,格式如下:
1 k
:查詢前 $k$ 段靈蛇節合成之後的末端位置。2 x theta
:將第 $x$ 段靈蛇節的轉角改為 $\text{theta}^ \circ$,其中 $\text{theta} \in \lbrace 0, 90, 180, 270\rbrace$ 且 $1 \leq x \leq n$。3 x len
:將第 $x$ 段靈蛇節的長度改為 $len$,其中 $1 \leq \text{len} \leq 10^ 9$ 且 $1 \leq x \leq n$。資料範圍:
1 k
,其中 $1 \leq k \leq n$。2 x theta
,其中 $\text{theta} \in \lbrace 0, 90, 180, 270\rbrace$。3 x len
,其中 $1 \leq \text{len} \leq 10^ 9$。對於每個查詢操作 1 k
,輸出一行,包含兩個整數 $x$ 和 $y$,代表前 $k$ 段靈蛇節合成之後的末端位置 $(x, y)$。
3 5 1 2 8 1 3 2 3 180 1 3 3 2 1 1 3
11 0 -5 0 -6 0
4 5 2 3 1 4 1 4 2 2 90 3 1 1 3 2 1 1 4
10 0 1 6
4 6 1 1 1 1 1 4 2 1 90 2 3 90 2 2 90 2 4 90 1 4
4 0 0 0
範例 1 的每一步操作後的結果如下圖所示:
範例 2 的每一步操作後的結果如下圖所示:
範例 3 的每一步操作後的結果如下圖所示:
YTP 2025 國中組初賽 p5
No. | Testdata Range | Constraints | Score |
---|---|---|---|
1 | 0~2 | 範例測試資料 | 0 |
2 | 0~12 | $1 \leq n, q \leq 2 \times 10^ 3$ | 4 |
3 | 13~22 | 對於每個指令 2 x theta 的 $\text{theta} \in \lbrace 0, 180\rbrace$ |
8 |
4 | 0~32 | 無額外限制 | 8 |