码迷,mamicode.com
首页 > 其他好文 > 详细

D. Diverse Garland

时间:2020-01-18 14:30:27      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:代码   ret   between   mode   har   focus   namespace   相同   span   

D. Diverse Garland

You have a garland consisting of n lamps. Each lamp is colored red, green or blue. The color of the ii-th lamp is si(‘R‘, ‘G‘ and ‘B‘ — colors of lamps in the garland).

You have to recolor some lamps in this garland (recoloring a lamp means changing its initial color to another) in such a way that the obtained garland is diverse.

A garland is called diverse if any two adjacent (consecutive) lamps (i. e. such lamps that the distance between their positions is 11) have distinct colors.

In other words, if the obtained garland is tt then for each ii from 11 to n−1n−1 the condition ti≠ti+1should be satisfied.

Among all ways to recolor the initial garland to make it diverse you have to choose one with the minimum number of recolored lamps. If there are multiple optimal solutions, print any of them.

Input

The first line of the input contains one integer n (1≤n≤2⋅1051≤n≤2⋅105) — the number of lamps.

The second line of the input contains the string s consisting of n characters ‘R‘, ‘G‘ and ‘B‘ — colors of lamps in the garland.

Output

In the first line of the output print one integer r — the minimum number of recolors needed to obtain a diverse garland from the given one.

In the second line of the output print one string t of length n — a diverse garland obtained from the initial one with minimum number of recolors. If there are multiple optimal solutions, print any of them.

Examples

input

9
RBGRRBRGG

output

2
RBGRGBRGR

input

8
BBBGBRRR

output

2
BRBGBRGR

input

13
BBRRRRGGGGGRR

output

6
BGRBRBGBGBGRG

题目描述:

两个相邻之间颜色不能相同,问最少修改颜色多少次。

分析:

每2个比较一次,相同换一下就行。最后的位置再特判一下。

代码:

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
char a[200009];
void vh(int i,char ch)
{
    if(a[i+1]!=G&&ch!=G) a[i]=G;
    else if(a[i+1]!=R&&ch!=R) a[i]=R;
    else a[i]=B;
}
int main()
{
    int n;
    cin>>n;
    getchar();
    for(int i=0;i<n;i++)
    {
        a[i]=getchar();
    }
    int ans=0;
    int m;
    for(int i=1;i<n-1;i++)
    {
        if(a[i-1]==a[i]) 
        {
            vh(i,a[i]);
            ans++;
        }
    }
    if(a[n-1]==a[n-2])
    {
        ans++;
        if(a[n-2]!=G) a[n-1]=G;
        else if(a[n-2]!=R) a[n-1]=R;
        else a[n-1]=B;
    }
    printf("%d\n",ans);
    for(int i=0;i<n;i++)
    printf("%c",a[i]);
    return 0;
} 

 

 

D. Diverse Garland

标签:代码   ret   between   mode   har   focus   namespace   相同   span   

原文地址:https://www.cnblogs.com/studyshare777/p/12208898.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!