SRM538 Div2 Easy(300) LeftOrRight

LeftOrRight

?を全てLに置換したプログラムか、全てRに置換したプログラムが答え。

#include <string>
using namespace std;

int reach( string s )
{
    int p = 0;
    int r = 0;
    for ( int i=0; i<(int)s.length(); i++ )
    {
        p += s[i]=='L' ? -1 : 1;
        r = max( r, abs(p) );
    }
    return r;
}

class LeftOrRight{public:
int maxDistance( string program )
{
    string l, r;
    for ( int i=0; i<(int)program.size(); i++ )
    {
        l += program[i]=='?' ? 'L' : program[i];
        r += program[i]=='?' ? 'R' : program[i];
    }
    return max( reach(l), reach(r) );
}};