Language: C

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main()
{
    /*
    問題文
     マスの情報を表す、L と R で構成された文字列 Sが与えられます。

     文字列 Sの長さを Nとしたとき、N個のマスが左右一列に並んでおり、左から i番目のマスには Sの左から i番目の文字が書かれています。
     ただし、左端のマスには必ず R、右端のマスには必ず L が書かれています。
     はじめ、各マスには 1人の子どもが居ます。
     子どもたちはそれぞれ次の規則に従った移動を 10^100回行います。今居るマスに書かれた文字に従って 1マス移動する。
     すなわち、今居るマスに書かれた文字が L のとき左隣のマスに、R のとき右隣のマスに移動する。10^100回の移動の後に各マスに居る子どもの人数を求めてください。
     
     制約
     Sは長さ 2以上 10^5以下の文字列であり、Sの各文字は L または R である。Sの 1文字目は R、N文字目は L である。
    */
    int i;
    int Nmax = 100000;
    char Str[Nmax];
    int len=0;
    int Child[Nmax];
    int Delta[Nmax];    
    int t,tmax;
    int Rmax=0, tmpRmax=0; // 連続R
    int Lmax=0, tmpLmax=0; // 連続L
    
    
        
    // 入力読込
    scanf("%s", Str);
    
    // 文字列長の取得
    len = strlen( Str );
//  	printf("%d\n",len);
  
    // 初期値設定
    for(i=0 ; i < len ; i++){
        Child[i] = 1;
    }
    
    // 最大移動回数の抽出
    // RLのペアを見つけて、その左の連続L又はその右の連続Rの最大値をカウント
    // RLLLLL 5    RRRRRL 5
    // RRRRRRLRRRLL 6
    
    for(i = 1 ; i < len ; i++){
        if( (Str[i-1] =='R') && (Str[i] == 'R') ){
            tmpRmax++;
            if( tmpRmaxx >= Rmax ) Rmax = tmpRmax;
        }
        else if( (Str[i-1]=='L') && (Str[i] == 'L') ){
            tmpLmax++;
            if(tmpLmaxx >= Lmax) Lmax = tmpLmax;
        }
        else{
            // tmp連続カウンタクリア
            tmpRmax=0;
            tmpLmax=0;
        }
    }
    
    
    if(tmpRmax >= tmpLmax) 
        tmax = tmpRmax;
    else
        tmax = tmpLmax;
    
    if(tmax%2==1) tmax = tmax+1;
    
    
    
    // 子供の移動
    // 💎この問題は、(LEN-1)以下の移動回数で2値状態に収束する
    // 移動終了時点から偶数回の移動では変化が生まれないので、
/*    // 最終状態である10の100乗までの移動回数差が偶数となる状態で終了すればよい
    if(len%2 == 0) 
        tmax = len;
    else
        tmax = len+1;
*/    
    
    for(t=1 ; t <= tmax ; t++){
        
        // 差分計測
        // ①差分配列初期化
        for(i = 0 ; i < len ; i++){
            Delta[i] = 0;
        }
                   
        // ②差分値計算
        for(i = 0 ; i < len ; i++){
            if(Str[i] == 'R'){
              	// i=len-1は必ずLだからここにこない
                Delta[i+1] = Delta[i+1] + Child[i];           
            }
            else{
              　// i=0 は必ずRだからここにこない
                Delta[i-1] = Delta[i-1] + Child[i];        
            } 	
        }
            
        // ③結果に反映
         for(i=0 ; i < len ; i++){
             Child[i] = Delta[i];
         }        
    }


    // 出力
    for(i=0 ; i < len ; i++){
        printf("%d ", Child[i]);
    }

  return 0;  
}

Compiler output:
main.c: In function 'main':
main.c:52:17: error: 'tmpRmaxx' undeclared (first use in this function); did you mean 'tmpRmax'?
   52 |             if( tmpRmaxx >= Rmax ) Rmax = tmpRmax;
      |                 ^~~~~~~~
      |                 tmpRmax
main.c:52:17: note: each undeclared identifier is reported only once for each function it appears in
main.c:56:16: error: 'tmpLmaxx' undeclared (first use in this function); did you mean 'tmpLmax'?
   56 |             if(tmpLmaxx >= Lmax) Lmax = tmpLmax;
      |                ^~~~~~~~
      |                tmpLmax
main.c:100:15: error: stray '\343' in program
  100 |               <U+3000>// i=0 <U+306F><U+5FC5><U+305A>R<U+3060><U+304B><U+3089><U+3053><U+3053><U+306B><U+3053><U+306A><U+3044>
      |               ^~~~~~~~