Submission #338295

#TimeUsernameProblemLanguageResultExecution timeMemory
338295GandhiGrowing Vegetable is Fun 3 (JOI19_ho_t3)C++17
0 / 100
1 ms492 KiB
#include <iostream>

using namespace std;

int main()
{
    int n;
    string s;
    string ss;
    char c='R';
    cin>>n>>s;
    int sum;
    sum=0;
    int r=0;
    int g=0;
    for(int i=0;i<n;++i)
    {
        if(s[i]=='R')
        {
            ++r;
        }
        else
        {
            ++g;
        }
    }
    if(max(g-r,r-g)>1)
    {
        cout<<-1;
        return 0;
    }
    if(r>g)
    {
        for(int i=0;i<n;++i)
        {
            if(i%2==0)
            {
                for(int j=i;j<n;++j)
                {
                    if(s[j]=='R')
                    {
                        sum+=max(0,j-i);
                        s[j]=s[i];
                        s[i]='R';
                        break;
                    }
                }
            }
            else
            {
                for(int j=i;j<n;++j)
                {
                    if(s[j]=='G')
                    {
                        sum+=max(0,j-i);
                        s[j]=s[i];
                        s[i]='G';
                        break;
                    }
                }
            }
        }
    }
    else if(g>r)
    {
        for(int i=0;i<n;++i)
        {
            if(i%2==1)
            {
                for(int j=i;j<n;++j)
                {
                    if(s[j]=='R')
                    {
                        sum+=max(0,j-i);
                        s[j]=s[i];
                        s[i]='R';
                        break;
                    }
                }
            }
            else
            {
                for(int j=i;j<n;++j)
                {
                    if(s[j]=='G')
                    {
                        sum+=max(0,j-i);
                        s[j]=s[i];
                        s[i]='G';
                        break;
                    }
                }
            }
        }
    }
    else
    {
        if(s[0]=='R')
        {
            c='G';
        }
        for(int i=0;i<n;++i)
        {
            if(i%2==0)
            {
                for(int j=i;j<n;++j)
                {
                    if(s[j]==s[0])
                    {
                        sum+=max(0,j-i);
                        s[j]=s[i];
                        s[i]=s[0];
                        break;
                    }
                }
            }
            else
            {
                for(int j=i;j<n;++j)
                {
                    if(s[j]!=s[0])
                    {
                        sum+=max(0,j-i);
                        s[j]=s[i];
                        s[i]=c;
                        break;
                    }
                }
            }
        }
    }
    cout<<sum;
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...