らての精進日記

修行をします

aoj0610:Weather Forecaster

解法

まず、この問題ではそれぞれの行を独立させて考えることができる。よって、与えられた行に対して答えを求めるという操作をH回行えばよい。

それぞれの行では、現時点で最も近いところにある雲のインデックス(存在しない場合は-1)を更新しながら左から走査していく。

コード

#include<bits/stdc++.h>
using namespace std;

int h,w;
int main(){
    cin>>h>>w;
    for(int i=0;i<h;i++){
        char str[128];cin>>str;
        int n=-1;
        for(int j=0;j<w;j++){
            if(str[j]=='c')n=j;
            if(j)cout<<" ";
            if(~n)cout<<j-n;
            else cout<<-1;
        }
        cout<<endl;
    }
    return 0;
}