这样读入是错误的,为什么?
inline char getdig()
{
char ch=getchar();
while(ch==10||ch==' ')ch=getchar();
return ch;
}
全文:
#include<bits/stdc++.h>
#include<ext/rope>
using namespace std;
using namespace __gnu_cxx;
char getdig()
{
char ch=getchar();
while(ch==10||ch==' ')ch=getchar();
return ch;
}
inline int read()
{
char ch=getchar();int x=0,t=1;
while(ch<'0'||ch>'9'){if(ch=='-')t=-t;ch=getchar();}
while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
return x*t;
return x*t;
}
const int N=5794385;
rope<char> *a[N];
int main()
{
int n=read(),cnt=0;
a[0]=new rope<char>();
for(int i=1;i<=n;++i)
{
// cout<<i<<endl;
char op=getdig();
if(op=='T')
{
char str=getdig();
cnt++;
a[cnt]=new rope<char>(*a[cnt-1]);
a[cnt]->push_back(str);
}
if(op=='U')
{
int num=read();
cnt++;
a[cnt]=new rope<char>(*a[cnt-num-1]);
}
if(op=='Q')
{
int num=read();
cout<<a[cnt]->at(num-1)<<endl;
}
// cout<<a[cnt]->at(0)<<" "<<a[cnt]->at(1)<<" "<<a[cnt]->at(2)<<endl;
}
}