1507: [NOI2003]Editor

Time Limit: 5 Sec  Memory Limit: 162 MB

Submit: 3535  Solved: 1435
[Submit][Status][Discuss]

Description

Input

输入文件editor.in的第一行是指令条数t,以下是需要执行的t个操作。其中:
为了使输入文件便于阅读,Insert操作的字符串中可能会插入一些回车符,请忽略掉它们(如果难以理解这句话,可以参考样例)。
除了回车符之外,输入文件的所有字符的ASCII码都在闭区间[32, 126]内。且行尾没有空格。 这里我们有如下假定: 
MOVE操作不超过50000个,INSERT和DELETE操作的总个数不超过4000,PREV和NEXT操作的总个数不超过200000。 
所有INSERT插入的字符数之和不超过2M(1M=1024*1024),正确的输出文件长度不超过3M字节。 
DELETE操作和GET操作执行时光标后必然有足够的字符。MOVE、PREV、NEXT操作必然不会试图把光标移动到非法位置。  输入文件没有错误。
对C++选手的提示:经测试,最大的测试数据使用fstream进行输入有可能会比使用stdio慢约1秒。

Output

输出文件editor.out的每行依次对应输入文件中每条GET指令的输出。

Sample Input

15
Insert 26
abcdefghijklmnop
qrstuv wxy
Move 15
Delete 11
Move 5
Insert 1
^
Next
Insert 1
_
Next
Next
Insert 4
.\/.
Get 4
Prev
Insert 1
^
Move 0
Get 22
 

Sample Output

.\/.
abcde^_^f.\/.ghijklmno
 

HINT

 

Source

块状链表的裸题,然而我不会。但。。我有rope

#include<cstdio>
#include<ext/rope>
using namespace std;
using namespace __gnu_cxx;
crope list;
char ch[(int)3e6+],s[];
int T,x,now;
int main(){
for(scanf("%d",&T);T--;){
scanf("%s",s);
switch(s[]){
case 'M':scanf("%d",&now);break;
case 'P':now--;break;
case 'N':now++;break;
case 'I':scanf("%d",&x);ch[x]=;
for(int i=;i<x;i++){
ch[i]=getchar();
while(ch[i]=='\n') ch[i]=getchar();
}
list.insert(now,ch);
break;
case 'D':scanf("%d",&x);list.erase(now,x);break;
case 'G':scanf("%d",&x);list.copy(now,x,ch);ch[x]=;puts(ch);break;
}
}
return ;
}

最新文章

  1. Entity Framework 延伸系列目录
  2. Tomcat 解压版安装
  3. Atitti 图像处理 图像混合 图像叠加&#160;blend 原理与实现
  4. 【Remoting】.Net remoting方法实现简单的在线升级(上篇:更新文件)
  5. caffe windows 学习第一步:编译和安装(vs2012+win 64)
  6. malloc、calloc、realloc的区别
  7. 如何避免JavaScript的内存泄露及内存管理技巧
  8. Azkaban2官方配置文档
  9. php功能---删除空目录
  10. ftk学习记录(IME文章)
  11. 九度oj题目1207:质因数的个数
  12. grub2详解(翻译和整理官方手册)
  13. Mac/Windows开发跨平台.NET Core 控制台程序
  14. 程序员节应该写博客之.NET下使用HTTP请求的正确姿势
  15. ShoneSharp语言(S#)的设计和使用介绍系列(1)— 开篇
  16. zookeeper部署到linux操作步骤
  17. python全栈开发day115、116-websocket、websocket原理、websocket加解密、简单问答机器人实现
  18. Introducation of Servlet filter(servlet过滤器介绍 )
  19. HashMap 的put方法
  20. 解决telnet无法连接 Connection refused

热门文章

  1. [luoguP1131] [ZJOI2007]时态同步(贪心)
  2. ElasticSearch聚合入门(续)
  3. Android SurfaceView与View
  4. PatentTips - Write Combining Buffer for Sequentially Addressed Partial Line Operations
  5. R语言入门--画图(一)--ggplot2
  6. Objective-C单例模式的常用实现
  7. curl模拟安卓手机进行网络请求
  8. Container With Most Water 双指针法
  9. String的引用传递
  10. Hibernate 与Mybatis之比较