发现进行一次排序后先前的操作都无效了,所以只需做最后一次排序后的操作。翻转操作打个翻转标记,互换操作根据翻转标记即可。

时间复杂度 \(O\left(n+m\right)\)。

code:

#include<bits/stdc++.h>
using namespace std;
#define N 1000005
#define For(i,x,y)for(i=x;i<=(y);i++)
int x[N],y[N],opt[N],a[N];
int read()
{
int A;
bool K;
char C;
C=A=K=0;
while(C<'0'||C>'9')K|=C=='-',C=getchar();
while(C>'/'&&C<':')A=(A<<3)+(A<<1)+(C^48),C=getchar();
return(K?-A:A);
}
void write(int X)
{
if(X<0)putchar('-'),X=-X;
if(X>9)write(X/10);
putchar(X%10|48);
}
int main()
{
bool rev=0;
int n,m,i,j;
n=read(),m=read();
For(i,1,n)a[i]=i;
For(i,1,m)
{
opt[i]=read();
if(opt[i]==3)x[i]=read(),y[i]=read();
}
i=m;
while(i&&opt[i]>2)i--;
if(opt[i]==2)
For(j,1,n>>1)swap(a[j],a[n-j+1]);
while(++i<=m)
if(opt[i]==3)if(rev)swap(a[n-x[i]+1],a[n-y[i]+1]);
else swap(a[x[i]],a[y[i]]);
else rev^=1;
For(i,1,n)write((rev?a[n-i+1]:a[i])),putchar(' ');
return 0;
}

最新文章

  1. H5坦克大战之【玩家控制坦克移动】
  2. .net面试(汇总2)
  3. 在Chrome+Visual Studio中调试asp.net程序很慢的问题(Firefox也有类似问题)
  4. PE文件头
  5. css之cursor,float
  6. Visual Studio个人常用快捷键
  7. EOF 与 getchar()
  8. JAVA多线程下,获取递增的序列号
  9. hdu4709求三角形面积
  10. 基于web的网上书城系统开发-----登录注册
  11. 【C#附源码】数据库文档生成工具支持(Excel+Htm)
  12. [luogu1972][bzoj1878][SDOI2009]HH的项链【莫队+玄学卡常】
  13. 【.net】The source was not found, but some or all event logs could not be searched
  14. Spring MVC 注解
  15. ADC采样间隔问题+TRGO作为ADC的触发源头
  16. python类的__slots__属性、__del__属性、上下文(__enter__和__exit__)、
  17. NYOJ----蛇形填数
  18. Qt-网易云音乐界面实现-8 主导航的实现-QtabWidget
  19. 常用LLDB指令
  20. PHP5.4 连接 SQL SERVER 2008

热门文章

  1. html2canvas.js——HTML转Canvas工具
  2. Java数据结构-03单链表(二)
  3. NB-IOT的应用场景有哪些
  4. model基础操作(上)
  5. Django、haystack、whoosh实现全局搜索
  6. git使用心得体会
  7. 参悟python元类(又称metaclass)系列实战(一)
  8. MySQL索引分析及使用
  9. 【Luogu】P1072 Hankson 的趣味题 题解
  10. 浅谈MVP