You are given a string s consisting of A, B and C.
Snuke wants to perform the following operation on s as many times as possible:
Choose a contiguous substring of s that reads ABC and replace it with BCA.
Find the maximum possible number of operations.
Constraints
1≤|s|≤200000
Each character of s is A, B and C.
输入
Input is given from Standard Input in the following format:
S
输出
Find the maximum possible number of operations.
样例输入
复制样例数据 ABCABC
样例输出
3
int main()
{
string a;
char s[200005]="";
int sum=0;
int cnt=0;
long long ans=0;
cin>>a;
for(int i=0;i<a.size();i++)///用x代替A,用y代替BC,单独的B、C当分隔符
{
if(a[i]=='A') s[cnt++]='x';
else if(a[i]=='B'&&a[i+1]=='C') {s[cnt++]='y';i++;}
else s[cnt++]=a[i];
}
//cout<<s<<endl;
for(int i=0;i<cnt;i++)
{
if(s[i]=='x') sum++;///计算一个子串中的其中一个y前面有几个x
else if(s[i]=='y') ans+=sum;///遇到y,ans+=sum
else sum=0; ///分隔符,sum归0
}
cout<<ans<<endl;
}