#559. 你
你
有个的矩阵,行编号为,列编号为,第行第列一开始为.
现在支持三种操作:交换两行,交换两列,或者交换某两个位置。
求进行完次操作后矩阵的形态。
输入格式
为了减小输入规模,本题采取以下方式读入:
第一行四个数表示行数,列数,操作数,随机种子。
生成器代码如下:
uint64_t seed;
uint64_t next(){ //xorshift64
seed^=seed<<13;
seed^=seed>>7;
seed^=seed<<17;
return seed;
}
接下来一个长度为的串,表示次操作分别的类型。
对于第次操作,如果是r
,则操作为交换第行,如果是c
则为交换第列,f
则为交换,这些变量按顺序分别是调用next()
的返回值对或取模后的值。
输出格式
为了减小输出规模,设为最后矩阵第行第列的值,只需要输出之后的值.
样例一
input
3 5 3 114514 crf
output
382914571
explanation
操作序列为:
c 3 0 r 2 1 f 1 2 2 2
最终矩阵为:
3 1 2 0 4 13 11 7 10 14 8 6 12 5 9
样例二
见下发文件。
数据范围与提示
对于的数据,$1\leq n,m\leq 5000,1\leq q\leq 10^6,0\leq seed\lt 2^{64}$.
子任务编号 | $n,m\leq$ | $q\leq$ | 特殊性质 | 分值 |
---|---|---|---|---|
$1$ | $100$ | $100$ | $20$ | |
$2$ | $5000$ | $5000$ | $20$ | |
$3$ | $5000$ | $10^6$ | $s$中没有`f` | $30$ |
$4$ | $5000$ | $10^6$ | $30$ |