Problem:
Score : 600 points

Problem Statement

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 \leq |s| \leq 200000

Each character of s is A, B and C.

Input

Input is given from Standard Input in the following format:

s

Output

Find the maximum possible number of operations.

Sample Input 1

ABCABC

Sample Output 1

3

You can perform the operations three times as follows: ABCABC → BCAABC → BCABCA → BCBCAA. This is the maximum result.

Sample Input 2

C

Sample Output 2

0

Sample Input 3

ABCACCBABCBCAABCB

Sample Output 3

6

Solution in JavaScript (node.js v5.12) (judge verdict: Accepted)

function Main(input) {
    const S = input[0];
    
    var currentA = 0;
    var sum = 0;
    var prevB = false;
    
    for (var index = 0; index < S.length; index++) {
        var element = S.charAt(index);
        if(element === "A") {
            if(prevB) {
                currentA = 0;
            }
            currentA++;
        }else if(element === "B") {
            if(prevB) { 
                currentA = 0;
            }
        } else {
            if(prevB) {
                sum += currentA;
            } else {
                currentA = 0;
            }
        }
        prevB = element === "B";
    }

    console.log(sum);
    
}

// 1行入力の場合
// Main(require("fs").readFileSync("/dev/stdin", "utf8").trim());

// 改行で分割
// Main(require("fs").readFileSync("/dev/stdin", "utf8").trim().split(/\n/));

// 改行・空白で分割
Main(require("fs").readFileSync("/dev/stdin", "utf8").trim().split(/\n|\s/));