http://www.sgi.com/tech/stl/Rope.html

1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cstdlib> 5 #include <algorithm> 6 #include <queue> 7 #include <vector> 8 #include <stack> 9 #include <map> 10 #include <set> 11 #include <cmath> 12 #include <cctype> 13 #include <ctime> 14 #include <ext/rope> 15 16 using namespace std; 17 using namespace __gnu_cxx; 18 19 #define REP(i, n) for (int i = 0; i < (n); ++i) 20 #define eps 1e-9 21 #define SZ(x) ((int)x.size()) 22 #define PI acos(-1.0) 23 24 typedef long long ll; 25 typedef pair<int, int> pii; 26 const int maxn = 2e6 + 10; 27 crope my_rope; 28 char s[maxn], opt[15]; 29 int q, p, n; 30 char c; 31 32 int main() { 33 #ifdef __AiR_H 34 freopen("in.txt", "r", stdin); 35 // freopen("out.txt", "w", stdout); 36 #endif // __AiR_H 37 scanf("%d", &q); 38 while (q--) { 39 scanf("%s", opt); 40 if (opt[0] == 'M') { scanf("%d", &p); } 41 else if (opt[0] == 'I') { 42 scanf("%d", &n); 43 for (int i = 0; i < n;) { 44 c = getchar(); 45 if (32 <= c && c <= 126) { s[i++] = c; } 46 } 47 s[n] = '