CodeForces - 1169D Good Triple

给定一个01串,判断这个串中有几个区间能够知足 s[i]=s[i+k]=s[i+2k]c++

AC代码:

#include <bits/stdc++.h>
using namespace std;
int main()
{
    string str;
    cin>>str;
    long long int pairs = 0;
    if(str.length()<2)
    {
        cout<<"0"<<endl;
        return 0;
    }
    for(int i=0; i<str.length()-2; i++)
    {
        int flag=0;
        for(int j=i+2; j<str.length(); j++)
        {
            for(int x=i; x<j-1; x++)
            {
                for(int k=1; (x+2*k)<=j; k++)
                {
                    if(str[x]==str[x+k]&&str[x]==str[x+2*k])
                    {
                        pairs = pairs+str.length()-j;
                        flag = 1;
                        break;
                    }
                }
                if(flag==1)
                {
                    break;
                }
            }
            if(flag==1)
            {
                break;
            }
        }
    }

    cout<<pairs<<endl;
}