Language: C

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

using namespace __gnu_pbds;
using namespace std;


#define fast ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define PSET(x,y) fixed<<setprecision(y)<<x
#define pb push_back
#define pii pair<int,int>
#define pf push_front
#define mp make_pair
#define vi vector<int>
#define vip vector<pair<int,int> >
#define ff first
#define ss second
#define int long long
#define mod 1000000007
#define BIG 998244353
#define s(t) scanf("%lld",&t)
#define p(t) printf("%lld\n",t)
#define mii map<int,int>
#define MSET(table,i) memset(table, i, sizeof(table))
#define endl '\n'
#define tc int t;cin>>t;while(t--)
#define pi  3.1415926358
#define bits(x) __builtin_popcount(x)
#define minimum(a,n) min_element(a,a+n)-a
#define maximum(a,n) max_element(a,a+n)-a
#define pqbig priority_queue<pii>
#define pqsmall priority_queue<int,vector<int>,greater<int> >
#define all(v) v.begin(),v.end()
#define sitr set<int>:: iterator
#define spitr set<pii>:: iterator
#define mitr map<int,int>:: iterator

int toint(const string &s) {stringstream ss; ss << s; int x; ss >> x; return x;}
string tostring ( int number ) {stringstream ss; ss << number; return ss.str();}


typedef tree<int, null_type, less<int>, rb_tree_tag,
        tree_order_statistics_node_update>
        new_data_set;


#define trace1(x)                cerr<<#x<<": "<<x<<endl
#define trace2(x, y)             cerr<<#x<<": "<<x<<" | "<<#y<<": "<<y<<endl
#define trace3(x, y, z)          cerr<<#x<<":" <<x<<" | "<<#y<<": "<<y<<" | "<<#z<<": "<<z<<endl
#define trace4(a, b, c, d)       cerr<<#a<<": "<<a<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<endl
#define trace5(a, b, c, d, e)    cerr<<#a<<": "<<a<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<" | "<<#e<< ": "<<e<<endl
#define trace6(a, b, c, d, e, f) cerr<<#a<<": "<<a<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<" | "<<#e<< ": "<<e<<" | "<<#f<<": "<<f<<endl

const int N=4e3+5;
int cnt_R[N],cnt_G[N],cnt_B[N];

int32_t main()
{
    fast;
    int n;cin>>n;
    string s;cin>>s;
    s='#'+s;
    for(int i=1;i<=n;i++)
    {
        if(s[i]=='R')
            cnt_R[i]=1;
        else if(s[i]=='G')
            cnt_G[i]=1;
        else
            cnt_B[i]=1;

        cnt_R[i]+=cnt_R[i-1];
        cnt_G[i]+=cnt_G[i-1];
        cnt_B[i]+=cnt_B[i-1];
    }

    int ans=0;

    for(int i=1;i<=n;i++)
    {
        for(int j=i+2;j<=n;j++)
        {
            int len=j-i;
            if(s[i]=='R')
            {
                if(s[j]=='G')
                {
                    ans+=cnt_B[j]-cnt_B[i];
                    if(len%2==0)
                    {
                        if(s[i+len/2]=='B')
                            ans--;
                    }
                }
                else if(s[j]=='B')
                {
                    ans+=cnt_G[j]-cnt_G[i];
                    if(len%2==0)
                    {
                        if(s[i+len/2]=='G')
                            ans--;
                    }
                }

            }
            else if(s[i]=='G')
            {
                if(s[j]=='R')
                {
                    ans+=cnt_B[j]-cnt_B[i];
                    if(len%2==0)
                    {
                        if(s[i+len/2]=='B')
                            ans--;
                    }
                }
                else if(s[j]=='B')
                {
                    ans+=cnt_R[j]-cnt_R[i];
                    if(len%2==0)
                    {
                        if(s[i+len/2]=='R')
                            ans--;
                    }
                }
            }
            else
            {
                if(s[j]=='G')
                {
                    ans+=cnt_R[j]-cnt_R[i];
                    if(len%2==0)
                    {
                        if(s[i+len/2]=='R')
                            ans--;
                    }
                }
                else if(s[j]=='R')
                {
                    ans+=cnt_G[j]-cnt_G[i];
                    if(len%2==0)
                    {
                        if(s[i+len/2]=='G')
                            ans--;
                    }
                }
            }

        }
    }
    cout<<ans<<endl;
}

Compiler output:
main.c:1:10: fatal error: bits/stdc++.h: No such file or directory
    1 | #include <bits/stdc++.h>
      |          ^~~~~~~~~~~~~~~
compilation terminated.