Lotus and Thermodynamics

Accepts: 0
Submissions: 144
Time Limit: 6000/3000 MS (Java/Others)
Memory Limit: 262144/262144 K (Java/Others)
问题描述
这几天Lotus对布朗运动很感兴趣,于是她想编一个模拟程序来满足她的研究欲望。
这个程序的目的是模拟一个二维平面上一些点的无规律运动,需要支持以下几种操作:
I x y : 表示在平面中出现了一个新的点$(x,y)$,编号为平面中已有的点数+1。
M l r x y : 表示编号属于$[l,r]$的点进行了位移$(x,y)$。
R l r x y a : 表示编号属于$[l,r]$的点关于点$(x,y)$逆时针旋转了角度$a$。其中$a$表示为弧度制,且$a$仅包含一位小数。
F l r x y d : 表示编号属于$[l,r]$的点以点$(x,y)$为中心缩放$d$倍,保证$d\in[0,1]$且$d$仅包含一位小数。
Q id : 询问编号为$id$的点的坐标,输出一行两个实数,用一个空格分开,用floor()取整到个位。即假如答案是x,y,就用printf("%.0lf %.0lf\n",floor(x),floor(y))来输出。
输入描述
多组数据,第一行一个整数$T$表示数据组数。
每组数据第一行一个整数$q\in[1,100000]$,表示操作个数
接下来$q$行,每行描述一个操作,格式如上所述
对于所有出现在输入文件里的数,保证它们属于$[-1000,1000]$
保证$q > 10000$的数据不超过2组。
输出描述
对于每个$Q$操作,用上面所述方法输出答案。保证答案中点的坐标绝对值小于$10^7$。
输入样例
2
6
I 4 -1
I 8 3
R 1 1 -4 8 -0.4
Q 1
F 1 2 -1 1 0.1
I -1 9
5
I 0 4
R 1 1 -6 9 1.9
Q 1
R 1 1 1 8 2.4
Q 1
输出样例
-1 -4
-4 16
-2 -1