[NOI 2003] Editor
2017-09-06 19:57
246 查看
rope大法好
//By Richard #include <cstdio> #include <algorithm> #include <iostream> #include <cstring> #include <cstdlib> #include <cmath> #include <ext/rope> #include <ctime> #define rep(x,y,z) for (int x=(y);(x)<=(z);(x)++) #define per(x,y,z) for (int x=(y);(x)>=(z);(x)--) #define log2(x) (31-__builtin_clz(x)) #define mod (int)(1e9+7) #define inf 0x3f3f3f3f #define cls(x) memset(x,0,sizeof(x)) #ifdef DEBUG #define debugdo(X) X #define debugndo(X) #define debugout(X) cout<<(#X)<<"="<<(X)<<endl #else #define debugdo(X) #define debugndo(X) X #define debugout(X) #endif // debug #ifdef ONLINE_JUDGE #define debugdo(X) #define debugndo(X) #define debugout(X) #endif #define putarray(x,n) rep(iiii,1,n) printf("%d ",x[iiii]) #define mp make_pair using namespace std; typedef pair<int,int> pairs; typedef long long LL; /////////////////////read4.0//////////////////////////////////// template <typename T> inline void read(T &x) { char ch;x=0; bool flag=false; ch=getchar(); while (ch>'9'||ch<'0') { if (ch=='-') flag=true; ch=getchar(); } while ((ch<='9'&&ch>='0')) { x=x*10+ch-'0'; ch=getchar(); } if (flag) x*=-1; } template <typename T> inline void read(T &x,T &y){read(x);read(y);} template <typename T> inline void read(T &x,T &y,T &z){read(x);read(y);read(z);} /////////////////////graph/////////////////////////////// #ifdef graphv const int maxn=,maxm=; struct GRAPH { int next[maxm],first[maxn],to[maxm],value[maxm],cnt; void addedge(int x,int y,int z){next[++cnt]=first[x];first[x]=cnt;to[cnt]=y;value[cnt]=z;} void addedge2(int x,int y,int z){addedge(x,y,z);addedge(y,x,z);} void addedge2(int x,int y,int z,int xx){addedge(x,y,z);addedge(y,x,xx);} }; #endif #ifdef graphnv const int maxn=,maxm=; struct GRAPH { int next[maxm],first[maxn],to[maxm],cnt; void addedge(int x,int y){next[++cnt]=first[x];first[x]=cnt;to[cnt]=y;} void addedge2(int x,int y){addedge(x,y);addedge(y,x);} }; #endif /////////////////variables&functions//////////////////// using namespace __gnu_cxx; crope cr; int t,now,x; char s[3333333],ch; int main() { read(t); while (t--) { ch=getchar(); while (ch=='\n') ch=getchar(); switch (ch) { case 'M':read(now);break; case 'P':now--;while(ch!='\n')ch=getchar();break; case 'N':now++;while(ch!='\n')ch=getchar();break; case 'I': read(x); rep(i,0,x-1) { s[i]=getchar(); if (s[i]=='\n') i--; } s[x]=0; cr.insert(now,s); getchar(); break; case 'D':read(x);cr.erase(now,x);break; case 'G':read(x);cr.copy(now,x,s);s[x]=0;puts(s);break; puts("-1"); } } return 0; }
相关文章推荐
- 块状链表(附NOI 2003 Editor,POJ 2131 Key Insertion)
- 1507: [NOI2003]Editor
- BZOJ1507 [NOI2003]Editor 【splay】
- 【BZOJ1507】[NOI2003]Editor Splay
- BZOJ1507 [NOI2003]Editor 【splay】
- 洛谷.4008.[NOI2003]editor文本编辑器(块状链表)
- 1507: [NOI2003]Editor
- [BZOJ1507][NOI2003]Editor(块状链表)
- bzoj1507: [NOI2003]Editor
- bzoj1507 [NOI2003]Editor(块状链表)
- [cogs330][luogu4008][NOI2003]editor文本编辑器(无旋Treap做法)
- BZOJ 1507 [NOI2003]Editor
- NOI’2003 - Day1 - Problem2 文本编辑器(Editor) 空间
- BZOI 1507 [NOI2003] Editor
- BZOJ1507 [NOI2003]Editor
- 【bzoj1507】[NOI2003]Editor
- Splay chapter 1 : NOI 2003 editor
- BZOJ 1507([NOI2003]Editor-块状链表)
- bzoj 1507: [NOI2003]Editor
- 【BZOJ】1507: [NOI2003]Editor(Splay)