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 1.8.0) (judge verdict: Time Limit Exceeded)

import java.util.Scanner;

public class Main {
	public static boolean Triple(String S, int i, int j, int k) {
		if ((S.charAt(i) != S.charAt(j)) && (S.charAt(j) != S.charAt(k)) && (S.charAt(k) != S.charAt(i))) {
			if (j - i != k - j) {
				return true;
			}
		}
		return false;
	}

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		String S = sc.next();
		int i, j, k;
		long sum = 0;
		for (i = 0; i < N; i++) {
			for (j = 0; j < i; j++) {
				for (k = 0; k < j; k++) {
					if (Triple(S, i, j, k) == true) {
						sum++;
					}
				}
			}
		}

		System.out.println(sum);
	}
}