CCCPaste

Untitled

#include 

using namespace std;
 string n;
 int true1;
 int dp[50000][4][4][4][4];
 int rec(int at, int l1, int l2, int r1, int r2){
        if(at==n.size()){
            return 0;
        }
     if(dp[at][l1][l2][r1][r2] != -1) {
         return dp[at][l1][l2][r1][r2];
     }
     int niza[4];

     int lzbir;
     int rzbir;
        int result=0;
        int color=0;
        if(n[at]=='R'){
            color=1;
        }
        if(n[at]=='Y'){
            color=2;
        }
        if(n[at]=='G'){
            color=3;
        }
        for(int i=0; i<4; i++){
            niza[i]=0;
        }
        niza[color]=1;
        niza[l1]=1;
        niza[l2]=1;
        lzbir=niza[1]+niza[2]+niza[3];

        for(int i=0; i<4; i++){
            niza[i]=0;
        }
        niza[color]=1;
        niza[r1]=1;
        niza[r2]=1;
        rzbir=niza[1]+niza[2]+niza[3];

        result=max(result, rec(at+1, color, l1, r1, r2)+lzbir);
        result=max(result, rec(at+1, l1, l2, color, r1)+rzbir);

        dp[at][l1][l2][r1][r2]=result;
        return result;

 }
int main()
{
    int golemina;
    cin>>golemina;
    cin>>n;
    for(int i=0; i<50000; i++){
        for(int j=0; j<4; j++){
            for(int k=0; k<4; k++){
                for(int l=0; l<4; l++){
                    for(int m=0; m<4; m++){
                        dp[i][j][k][l][m]=-1;
                    }
                }
            }
        }
    }

    cout<