PID419 / 发发的实验室
题目描述

理化实验操作考试其实是相当麻烦的,所以发发一直在实验室里埋头苦干,争取拿到满分……我们的化学老师Mr.Hit在一旁亲自发出指令并进行监督。现在发发在做一个特别麻烦的液体药品取用和转移的实验。在他面前有一个环形的试管架,上面有n个孔,这些孔顺时针按1~n编号(在实验过程中试管架不会移动,这些孔的编号也不会变)。每个孔中都有一支试管,里面装的是硫酸铜溶液,编号为i的孔中试管里溶液体积为Vi(如果Vi=0就说明这支试管是空的)。在实验中可以进行下面6种操作(其中x,y为1~n的整数,并且为了描述方便,将编号为x的孔中的试管称为试管x,但实际上要知道试管的序号是会变动的):

●Out x:将试管x倒空;

●Add x y:测量试管x中溶液的体积V,并将体积为y*V的硫酸铜溶液倒入试管x;

●Copy x y:测量试管x中溶液的体积,并将同体积的硫酸铜溶液倒入试管y;

●Move x y:将试管x中的溶液倒入试管y;

●Spin x:将n支试管顺时针旋转,使每支试管都产生x的位移

●Roll x y:将试管x~y位置翻转

注意测量操作后会将原溶液倒回原试管,且不会造成转移时的残余。比如原来若有四支试管,Vi分别为2,4,1,3,那么分别进行如下操作后得到的Vi为(为表示方便,操作名只保留首字母,输入数据亦同):

●O 1:0,4,1,3

●A 4 1:2,4,1,6

●C 2 3:2,4,5,3

●M 1 4:0,4,1,5

●S 3:4,1,3,2

●R 2 4:2,3,1,4

所有试管都有着相同的容量C,为了避免溢出的情况,一旦某支试管装满了溶液,发发就会把此试管倒空(而无需Mr. Hit的指令)。我们可以认定溶液的转移是缓慢进行的,就是说,当溶液转移过程中有一支试管装满时,发发会先将这支试管倒空再继续进行溶液转移。

Mr. Hit会命令发发做很多操作,其中连续的m个操作称为一轮操作,而Mr. Hit发出的命令就是让发发连续做t轮操作。现在劳累的发发想知道实验做完时每个孔中试管里有多少溶液。

【约定】

40%的数据满足t<=10000;

100%的数据满足3<=n<=15,1<=m<=100,1<=t<=2^31,1<=C<=10000,Vi<C且为整数。

数据保证不会出现M 1 1之类的错误操作。

输入格式

第一行为四个整数n,m,t,C。第二行n个整数,表示编号为i的孔中试管里溶液的初始体积Vi。接下来m行描述了一轮操作中的m个操作(描述方式见上文)。

输出格式

n行,第i行为实验结束时的Vi。

样例输入
样例输出
提交题目 Error [ 更改语言 ] Language
C C++ Pascal Python2
相关讨论
查看更多讨论
发布新讨论 讨论