记录编号 |
162626 |
评测结果 |
WWWEWEEEEE |
题目名称 |
[AHOI 2006] 可可的文本编辑器 |
最终得分 |
0 |
用户昵称 |
RP++ |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
0.494 s |
提交时间 |
2015-05-18 11:53:16 |
内存使用 |
4.13 MiB |
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <ext/rope>
using namespace std;
using namespace __gnu_cxx;
#define maxn 2000010
rope<char>tmp, a, b;
char ch[10], s[maxn], rs[maxn];
int main() {
freopen("editor.in", "r", stdin);
freopen("editor.out", "w", stdout);
int n;
scanf("%d", &n);
int l, len, k = 0;
while(n--) {
scanf("%s", ch);
switch(ch[0]) {
case 'M': scanf("%d", &k); break;
case 'N': k++; break;
case 'P': k--; break;
case 'G': printf("%c\n", a[k]); break;
case 'I': scanf("%d", &l); len = a.length();
for(int i = 0; i < l; i++) {
s[i] = getchar();
while(s[i] == '\n') s[i] = getchar();
rs[l - i - 1] = s[i];
}
rs[l] = s[l] = 0;
a.insert(k, s), b.insert(len - k, rs);
break;
case 'D': scanf("%d", &l); len = a.length();
a.erase(k, l), b.erase(len - k- l, l);
break;
default: scanf("%d", &l); len = a.length();
tmp = a.substr(k, l);
a = a.substr(0, k) + b.substr(len - k - l, l) + a.substr(k + l, len - k - l);
b = b.substr(0, len - l - k) + tmp + b.substr(len - k, k);
}
}
}