小葱和小绪是一對好朋友,自從小葱 11 連出了 1UR2SR 之後,小绪就覺得小葱的人品特別好,於是小绪給小葱出了一道題來測試小葱的人品。
小绪首先在平面上畫了 $N$ 個點,分別是 $P_1,P_2,\ldots,P_N$。小绪把這 $N$ 個點依序相連,即連接 $(P_1,P_2),(P_2,P_3),\ldots,(P_{N-1},P_N)$,得到 $N-1$ 條線段。
之後小绪每次在平面上畫出一條直線,然後問小葱這條直線與多少條線段相交。特別地,在線段端點處相交算作相交,直線完全覆蓋線段時也算作相交。
這樣的問題自然難不倒小葱,小葱只需要憑自己的人品用直覺便能給出正確的答案。
小绪想測試小葱的人品究竟有多好,於是他加大了問題的難度:
除了每次詢問以外,小绪會不時地將一個新的點 $P$ 插入到 $P_i$ 和 $P_{i+1}$ 之間,然後按照順序對所有的點重新標記下標。即在 $P_i$ 之後的點的下標會依次增加,而點 $P$ 會變成新的點 $P_{i+1}$。特別地,點 $P$ 也可以插入到第一個點之前或最後一個點之後。
人品超級好的小葱依舊能夠輕鬆地給出答案,於是小绪又進一步提高了難度:
每次插入或提問之後,小绪都將操作後的所有線段記錄了下來,稱作一個歷史版本。歷史版本 $T$ 表示在第 $T$ 次操作後得到的歷史版本。
插入新點的操作改為了在某一個歷史版本 $T$ 的基礎上,插入一個點 $P$,並得到一個新的歷史版本。提問操作後新的歷史版本為所提問的歷史版本 $T$。
小绪對小葱的提問改為了對於一個歷史版本 $T$,給出一條直線,詢問這條直線會與多少條線段相交。
小葱雖然人品很好,但面對這樣的問題卻也束手無策了,他只好找到來參加 CTSC 的你,請你來幫他解決這個問題。
輸入格式
輸入檔案 shallot.in。
第一行兩個整數 $N,M,C$,表示一開始的點數和總共的操作數,以及資料是否加密。如果 $C=1$,那麼代表資料被加密過,每次詢問操作中的 $X_0,Y_0,X,Y$ 以及插入操作中的 $X,Y$ 都是被加密過的資料,你需要將它們異或 $last\_ans$ 從而得到正確的資料,其中 $last\_ans$ 是上一次詢問的答案,剛開始時 $last\_ans=0$。
接下來 $N$ 行每行兩個整數,其中第 $i$ 行的兩個數表示 $P_i$ 的橫座標和縱座標。
接下來 $M$ 行,表示小绪的 $M$ 次操作,其中第 $i$ 行(從 $1$ 開始標號)操作後得到的結果為歷史版本 $i$。
對於每次操作,首先會有一個字母代表小绪的這次操作的操作類型。
如果這個字母為 H,代表本次操作為一次詢問操作:接下來會有五個整數 $T,X_0,Y_0,X,Y$,代表在歷史版本 $T$ 的情況下,小绪給出一條經過 $(X_0,Y_0)$、方向為 $(X,Y)$ 的直線,小葱要回答出它會和多少條線段相交。
如果這個字母為 Z,代表本次操作為一次插入操作。接下來會有四個數 $T,i,X,Y$,代表小绪在歷史版本 $T$ 的基礎上,在 $P_i$ 後面插入了一個座標為 $(X,Y)$ 的點。特別地,如果 $i=0$,表示該點插入在 $P_1$ 之前。
輸出格式
輸出檔案 shallot.out 要求對於每一次詢問操作,輸出一行一個整數代表小葱應該回答的正確答案。
範例
輸入格式 1
2 3 0 0 0 1 1 H 0 1 0 -1 1 H 1 0 1 1 1 H 2 -1 -1 1 1
輸出格式 1
1 0 1
說明
對於第三次詢問,直線完全覆蓋了線段,小绪會認為這也算相交。
輸入格式 2
2 3 0 0 0 2 2 Z 0 2 0 2 H 0 0 1 1 1 H 1 0 1 1 1
輸出格式 2
0 2
範例 3
見選手目錄下的 shallot/shallot.in 與 shallot/shallot.ans。
資料範圍
保證每次詢問操作的 $T$ 一定小於等於目前操作的數量,所有輸入資料均為整數。
有以下 4 類特殊資料,它們兩兩沒有交集:
- 對於 $15\%$ 的資料,保證 $1\le N,M\le 1000$;
- 對於 $15\%$ 的資料,保證對於第 $i$ 次操作,$T=i-1$;
- 對於 $15\%$ 的資料,保證 $C=0$ 且不存在修改操作;
- 對於 $15\%$ 的資料,對於插入操作,保證 $Y=0$(加密過的資料指解密後的 $Y$),即給出的直線平行於 $x$ 軸。
以上資料還保證 $1\le N,M\le 5\times 10^4$。
對於 $100\%$ 的資料,保證 $1\le N,M\le 10^5$,所有的座標範圍在 $[-10^8,10^8]$ 內,且每組資料中所有詢問的答案總和不超過 $10^6$,插入操作的次數不會超過 $5\times 10^4$。注意這些線段可能會互相相交。