Submission #1179635

#TimeUsernameProblemLanguageResultExecution timeMemory
1179635Szymon_PilipczukBitaro the Brave (JOI19_ho_t1)C++20
100 / 100
388 ms106084 KiB
#include <bits/stdc++.h>
using namespace std;
#define rep(a) for(int i = 0;i<a;i++)
#define rep2(a) for(int j = 0;j<a;j++)
#define repm(a) for(int j = a-1;j>=0;j--)
int main()
{
    int h,w;
    cin>>h>>w;
    int b[h][w];
    rep(h)
    {
        string s;
        cin>>s;
        rep2(w)
        {
            if(s[j] == 'J')
            {
                b[i][j] = 0;
            }
            else if(s[j] == 'O')
            {
                b[i][j] = 1;
            }
            else
            {
                b[i][j] = 2;
            }
        }
    }
    int dp1[h][w];
    int dp2[h][w];
    rep(h)
    {
        dp1[i][w-1] = 0;
            if(b[i][w-1] == 1)
            {
                dp1[i][w-1]++;
            }
        for(int j = w-2;j>=0;j--)
        {
            dp1[i][j] = dp1[i][j+1];
            if(b[i][j] == 1)
            {
                dp1[i][j]++;
            }
        }
    }
    rep(w)
    {
        dp2[h-1][i] = 0;
        if(b[h-1][i] == 2)
        {
            dp2[h-1][i]++;
        }
        for(int j = h-2;j>=0;j--)
        {
            dp2[j][i] = dp2[j+1][i];
            if(b[j][i] == 2)
            {
                dp2[j][i]++;
            }
        }
    }
    long long ans = 0;
    rep(h)
    {
        rep2(w)
        {
            if(b[i][j] == 0)
            {
                //cout<<dp2[i][j]<<" "<<dp1[i][j]<<"\n";
                ans+=dp2[i][j]*dp1[i][j];
            }
        }
    }
    cout<<ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...