TouchStone
  请登录后使用
登录 注册
 系统首页  练习题库  考试列表  判题结果  信息发布  解题排行
  • 首页
  • 题库
  • P3275
  • 题目
  • P3275【分块·莫队】动态逆序对2
    限制 : 时间限制 : 50000 MS   空间限制 : 524288 KB
    评测说明 : 10s
    问题描述

    给你一个1,2,...,n的排列记为a[1],a[2],...,a[n]。有m个操作,操作共有两种:
    1.交换a[l]和a[r]的值。
    2.提问a[l],a[l+1],...,a[r-1],a[r]这个子段的逆序对数目。
    nodgd为了表现他很强,就给题目加了强制在线。设lastans表示上一次的提问的答案(一开始为0)。每次输入l',r',真正的l和r要这样计算:l=(l'+lastans)%n+1,r=(r'+lastans)%n+1,如果l>r就再交换一下。

    输入格式

    第一行两个整数n,m。
    第二行n个整数a[1],a[2],...,a[n]。
    接下来m行每行三个整数k,l',r'。其中k=1表示操作1,k=2表示操作2。

    输出格式

    对每个提问输出一行表示答案。

    样例输入

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

    样例输出

    0
    8
    5

    提示

    样例解释:
    样例输入解密后是这样的
    5 5
    5 4 3 2 1
    1 2 3
    2 2 3
    1 4 5
    2 1 5
    2 1 4

    数据范围:
    对于30%的数据,1<=n,m<=1000;
    对于另外10%的数据,操作2不超过15次;
    对于另外30%的数据,操作1不超过15次;
    对于100%的数据,1<=n,m<=40000,0<=l',r'<=10^6,若非特别说明,两种操作数量大致相等。