#include <iostream>
using namespace std;
#include <unordered_set>
#include <bits/stdc++.h>
#include <limits.h>
#include <unordered_map>
unordered_map< string, string> otherColors;
void processString( string& sameColor, int & total, char c) {
cout << sameColor.length ( ) << endl;
if ( sameColor.length ( ) == 0 ) return "" ;
char first = sameColor[ 0 ] ;
if ( sameColor.length ( ) == 1 ) return sameColor;
if ( sameColor.length ( ) % 2 == 1 ) {
for ( int i= 1 ; i < sameColor.length ( ) ; i+ = 2 )
sameColor[ i] = otherColors[ string( 1 ,first) ] [ 0 ] ;
} else {
//if it is the even color
if ( sameColor.length ( ) == 2 ) {
cout << "here" ;
if ( c ! = ' ' )
sameColor[ 1 ] = otherColors[ string( 1 ,sameColor[ 0 ] ) + string( 1 ,c) ] [ 0 ] ;
else
sameColor[ 1 ] = otherColors[ string( 1 ,sameColor[ 0 ] ) ] [ 0 ] ;
} else {
string s1 = sameColor.substr ( 0 , sameColor.length ( ) / 2 ) ;
string s2 = sameColor.substr ( sameColor.length ( ) / 2 ) ;
sameColor[ s1.length ( ) ] = otherColors[ string( 1 ,first) ] [ 0 ] ;
s1 = s1.substr ( s1.length ( ) - 1 ) ;
processString( s1, total, otherColors[ string( 1 ,first) ] [ 0 ] ) ;
processString( s2, total,' ' ) ;
sameColor = s1+ s2;
}
}
}
int main( ) {
// your code goes here
otherColors[ "B" ] = "RG" ;
otherColors[ "R" ] = "BG" ;
otherColors[ "G" ] = "BR" ;
otherColors[ "BR" ] = "G" ;
otherColors[ "RB" ] = "G" ;
otherColors[ "BG" ] = "R" ;
otherColors[ "GB" ] = "R" ;
otherColors[ "GR" ] = "B" ;
otherColors[ "RG" ] = "B" ;
int T;
cin >> T;
string colors, result;
cin >> colors;
int total = 0 , minChange = INT_MAX ;
char prev = ' ' ;
//cout << "checking " << s << endl
string sameColor = colors;
string nextColor;
for ( int i= 0 ; i< T; i++ ) {
if ( prev == ' ' || colors[ i] == prev) {
nextColor + = colors[ i] ;
} else {
//prcoess the color
cout << "processing " << nextColor << endl;
char c = i < colors.length ( ) - 1 ? colors[ i] : ' ' ;
processString( nextColor, total, c) ;
cout << " result " << nextColor << endl;
nextColor = "" ;
}
prev = colors[ i] ;
}
processString( sameColor, total, ' ' ) ;
cout << total << endl;
cout << sameColor << endl;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxsaW1pdHMuaD4KI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+CnVub3JkZXJlZF9tYXA8c3RyaW5nLCBzdHJpbmc+IG90aGVyQ29sb3JzOwoKdm9pZCBwcm9jZXNzU3RyaW5nKHN0cmluZyYgc2FtZUNvbG9yLCBpbnQmIHRvdGFsLCBjaGFyIGMpewoJY291dCA8PCBzYW1lQ29sb3IubGVuZ3RoKCkgPDwgZW5kbDsKCWlmKHNhbWVDb2xvci5sZW5ndGgoKSA9PSAwKSByZXR1cm4gIiI7CgljaGFyIGZpcnN0ID0gc2FtZUNvbG9yWzBdOwoJaWYoc2FtZUNvbG9yLmxlbmd0aCgpID09IDEpIHJldHVybiBzYW1lQ29sb3I7CglpZihzYW1lQ29sb3IubGVuZ3RoKCkgJSAyID09IDEpewoJCWZvcihpbnQgaT0gMTsgaSA8IHNhbWVDb2xvci5sZW5ndGgoKTsgaSs9MikKCQkJc2FtZUNvbG9yW2ldID0gb3RoZXJDb2xvcnNbc3RyaW5nKDEsZmlyc3QpXVswXTsKCX1lbHNlewoJCS8vaWYgaXQgaXMgdGhlIGV2ZW4gY29sb3IKCQlpZihzYW1lQ29sb3IubGVuZ3RoKCkgPT0gMil7CgkJCWNvdXQgPDwgImhlcmUiOwoJCQlpZihjICE9ICcgJykKCQkJCXNhbWVDb2xvclsxXSA9IG90aGVyQ29sb3JzW3N0cmluZygxLHNhbWVDb2xvclswXSkgKyBzdHJpbmcoMSxjKV1bMF07CgkJCWVsc2UKCQkJCXNhbWVDb2xvclsxXSA9IG90aGVyQ29sb3JzW3N0cmluZygxLHNhbWVDb2xvclswXSldWzBdOwoJCX0gZWxzZXsKCQkJc3RyaW5nIHMxID0gc2FtZUNvbG9yLnN1YnN0cigwLCBzYW1lQ29sb3IubGVuZ3RoKCkvMik7CgkJCXN0cmluZyBzMiA9IHNhbWVDb2xvci5zdWJzdHIoc2FtZUNvbG9yLmxlbmd0aCgpLzIpOwoJCQlzYW1lQ29sb3JbczEubGVuZ3RoKCldID0gb3RoZXJDb2xvcnNbc3RyaW5nKDEsZmlyc3QpXVswXTsKCQkJczEgPSBzMS5zdWJzdHIoczEubGVuZ3RoKCktMSk7CgkJCXByb2Nlc3NTdHJpbmcoczEsIHRvdGFsLCBvdGhlckNvbG9yc1tzdHJpbmcoMSxmaXJzdCldWzBdKTsKCQkJcHJvY2Vzc1N0cmluZyhzMiwgdG90YWwsJyAnKTsKCQkJc2FtZUNvbG9yID0gczErczI7CgkJfQoJfQp9CmludCBtYWluKCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQpvdGhlckNvbG9yc1siQiJdID0gIlJHIjsKb3RoZXJDb2xvcnNbIlIiXSA9ICJCRyI7Cm90aGVyQ29sb3JzWyJHIl0gPSAiQlIiOwpvdGhlckNvbG9yc1siQlIiXSA9ICJHIjsKb3RoZXJDb2xvcnNbIlJCIl0gPSAiRyI7Cm90aGVyQ29sb3JzWyJCRyJdID0gIlIiOwpvdGhlckNvbG9yc1siR0IiXSA9ICJSIjsKb3RoZXJDb2xvcnNbIkdSIl0gPSAiQiI7Cm90aGVyQ29sb3JzWyJSRyJdID0gIkIiOwoJaW50IFQ7CgljaW4gPj4gVDsKCXN0cmluZyBjb2xvcnMsIHJlc3VsdDsKCWNpbiA+PiBjb2xvcnM7CglpbnQgdG90YWwgPTAsIG1pbkNoYW5nZSA9IElOVF9NQVg7CgljaGFyIHByZXYgPSAnICc7CgkvL2NvdXQgPDwgImNoZWNraW5nICIgPDwgcyA8PCBlbmRsCglzdHJpbmcgc2FtZUNvbG9yID0gY29sb3JzOwoJc3RyaW5nIG5leHRDb2xvcjsKCWZvcihpbnQgaT0wOyBpPFQ7aSsrKXsKCQkKCQlpZihwcmV2ID09ICcgJyB8fCBjb2xvcnNbaV0gPT0gcHJldil7CgkJCW5leHRDb2xvciArPSBjb2xvcnNbaV07CgkJfWVsc2V7CgkJCS8vcHJjb2VzcyB0aGUgY29sb3IKCQkJY291dCA8PCAicHJvY2Vzc2luZyAiIDw8IG5leHRDb2xvciA8PGVuZGw7CgkJCWNoYXIgYyA9IGkgPGNvbG9ycy5sZW5ndGgoKSAtMSA/IGNvbG9yc1tpXSA6ICcgJzsKCQkJcHJvY2Vzc1N0cmluZyhuZXh0Q29sb3IsIHRvdGFsLCBjKTsKCQkJY291dCA8PCIgcmVzdWx0ICIgPDwgbmV4dENvbG9yIDw8IGVuZGw7CgkJCW5leHRDb2xvciA9IiI7CgkJfQoJCQoJCXByZXYgPSBjb2xvcnNbaV07CgoJfQoJcHJvY2Vzc1N0cmluZyhzYW1lQ29sb3IsIHRvdGFsLCAnICcpOwoJY291dCA8PCB0b3RhbCA8PCBlbmRsOwoJY291dCA8PCBzYW1lQ29sb3IgPDwgZW5kbDsKCXJldHVybiAwOwp9
compilation info
prog.cpp: In function ‘void processString(std::__cxx11::string&, int&, char)’:
prog.cpp:11:37: error: return-statement with a value, in function returning 'void' [-fpermissive]
if(sameColor.length() == 0) return "";
^~
prog.cpp:13:37: error: return-statement with a value, in function returning 'void' [-fpermissive]
if(sameColor.length() == 1) return sameColor;
^~~~~~~~~
stdout