Zyn的数列

提交数: 1075, 通过率: 56.65%, 平均分: 58.19

题目描述:

Zyn为了加密一个数列,要对这个数列进行操作。

Zyn有3种操作,一:对位置x的数值加y。二:把位置x和位置y的数值对换。三:把位置l到位置r的一段数值和位置(l+x)到位置(r+x)的一段数值对换。

例如:对1234567进行一操作,x=3,y=4,新的数列就是1274567。对1234567进行二操作,x=3,y=4,新的数列就是1243567。对1234567进行三操作,l=1,r=2,x=3,新的数列就是4531267。

他想知道操作后数值为多少。

输入格式:

第一个数n,m表示有n个数,m个操作,下一行有n个数,表示当前数值。再接下来,有m行,表示依次进行的操作。每行开头一个数k,若k=1,表示操作1,后面跟着x和y,意义同题目。若k=2,表示操作2,后面跟着x和y,意义同题目。若k=3,表示操作3,后面跟着l、r和x,意义同题目。

输出格式:

输出完成后的数列。

样例输入:

5 3
1 2 3 4 5
1 3 7
2 1 5
3 1 2 3

样例输出:

4 1 10 5 2

提示:

n<=100,m<=100,并且对于操作三l<=r<=n/2,x<=n,对于操作二x<=n,y<=n,对于操作一x<=n,放心数据保证时间不超。

时间限制: 1000ms
空间限制: 256MB

来源: 原创