TopCoder

FHVirus
想像不出自己 AC 的題目是實作不出來的!

User's AC Ratio

81.2% (65/80)

Submission's AC Ratio

33.8% (153/452)

Tags

Description

大陸人最喜歡吃冰塊了,不過每次都只吃普通的冰塊實在太單調了,某天他決定把各種不同的飲料放進冷凍庫,製造出許多不同口味、不同顏色的冰塊。
他將這些冰塊先排成一個矩形,準備按照順序吃下,但是他突然發現好像可以用這些冰塊,排成有趣的圖案。他有可能會做的事情有三種:將兩顆冰塊對調、將兩列冰塊對調、將兩欄冰塊對調。
現在告訴你大陸人做的所有動作,請輸出最終冰塊排成圖形。注意,有時候大陸人會腦筋不清楚,所以可能會出現「把a和a交換」這種動作,代表大陸人把一塊(或一排)冰塊拿起來後又放回原本的地方了。

本題滿分為150分。
本題輸出量較大,使用C++的同學,輸出換行時請避免使用endl(請改用'\n'),以避免超時。

Input Format

輸入第一行有兩個正整數$M,N$,分別代表一開始矩形的列數和欄數。
接下來會有$M$列,每列有$N$個以空白隔開的色碼,代表每塊冰塊的顏色。色碼的格式為#xxxxxx,其中每個x09或大寫AF共16種字元的其中之一。
接下來會有一個非負整數$P$,代表大陸人總共做了多少動作。
接下來有$P$行,每一行代表一個動作。
如果是將兩顆冰塊對調,會以字元S代表,後面接四個正整數$x_1,y_1,x_2,y_2$,代表兩個要交換的冰塊座標。
如果是將兩列冰塊對調,會以字元R代表,後面兩個正整數$a,b$,代表要交換的兩列編號。
如果是將兩欄冰塊對調,會以字元C代表,後面兩個正整數$a,b$,代表要交換的兩欄編號。
保證所有動作的座標、欄數、列數都是合法的(不會超出範圍)。

對於所有測資,$M\times N\leq 10^ 6; P\leq 10^ 6$。

子任務(測資)額外限制分數
1 (0)$M=N=1$5
2 (0~3)$M=1$33
3 (4~7)$M,N,P\leq 1000$49
4 (8~11)沒有「將兩顆冰塊對調」的操作23
5 (0~15)無限制40

Output Format

輸出$M$行,每行$N$個色碼(色碼之格式請參見輸入格式),代表最終冰塊編排的樣子。

Sample Input 1

3 3
#FF00FF #000000 #000000
#FF0000 #FF0000 #FF0000
#000000 #000000 #000000
3
S 3 1 2 3
R 2 3
C 1 1

Sample Output 1

#FF00FF #000000 #000000
#FF0000 #000000 #000000
#FF0000 #FF0000 #000000

Hints

Problem Source

建國中學106學年度校隊選拔:初試pA

Subtasks

No. Testdata Range Score
1 0~3 33
2 4~7 49
3 8~11 23
4 0~15 40
5 0 5

Testdata and Limits

No. Time Limit (ms) Memory Limit (VSS, KiB) Output Limit (KiB) Subtasks
0 1900 131072 262144 1 4 5
1 1900 131072 262144 1 4
2 1900 131072 262144 1 4
3 1900 131072 262144 1 4
4 1900 131072 262144 2 4
5 1900 131072 262144 2 4
6 1900 131072 262144 2 4
7 1900 131072 262144 2 4
8 1900 131072 262144 3 4
9 2500 131072 262144 3 4
10 1900 131072 262144 3 4
11 1900 131072 262144 3 4
12 1900 131072 262144 4
13 1900 131072 262144 4
14 1900 131072 262144 4
15 1900 131072 262144 4