Problem:
Score : 400 points

Problem Statement

We have a string S of length N consisting of R, G, and B.

Find the number of triples (i,~j,~k)~(1 \leq i < j < k \leq N) that satisfy both of the following conditions:

S_i \neq S_j, S_i \neq S_k, and S_j \neq S_k.

j - i \neq k - j.

Constraints

1 \leq N \leq 4000

S is a string of length N consisting of R, G, and B.

Input

Input is given from Standard Input in the following format:

N
S

Output

Print the number of triplets in question.

Sample Input 1

4
RRGB

Sample Output 1

1

Only the triplet (1,~3,~4) satisfies both conditions. The triplet (2,~3,~4) satisfies the first condition but not the second, so it does not count.

Sample Input 2

39
RBRBGRBGGBBRRGBBRRRBGGBRBGBRBGBRBBBGBBB

Sample Output 2

1800

Solution in Java (OpenJDK 11.0.6) (judge verdict: Wrong Answer)

import java.util.Scanner;

public class Main {

    Main(){
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        String S = scanner.next();

        int r=0,g=0,b=0;
        for(int i=0;i<N;i++){
            switch (S.charAt(i)){
                case 'R':
                    r++;
                    break;
                case 'G':
                    g++;
                    break;
                case 'B':
                    b++;
                    break;
            }
        }

        int total = r*g*b;

        for (int i = 0; i < N; i++) {
            for (int j = i+1; j < N-1; j++) {
                int k = j + j - i;

                if(N <= k) continue;

                if(S.charAt(i) != S.charAt(j)
                    && (S.charAt(j) != S.charAt(k)
                    && S.charAt(i) != S.charAt(k))){
                    total--;
                }
            }
        }

        System.out.println(total);
    }

    public static void main(String[] args) {
        new Main();
    }
}