Submission #230048

#TimeUsernameProblemLanguageResultExecution timeMemory
230048nickmet2004Bitaro the Brave (JOI19_ho_t1)C++11
100 / 100
287 ms89440 KiB
#include<bits/stdc++.h>
#define ll long long

using namespace std;

const int N = 3005;

int H , W;
string s[N];
int Jo[N][N] , Ji[N][N];

ll solve(){
    for(int i = 0; i < H; ++i){
        int cntO = 0;
        for(int j = W - 1; j >= 0; --j){
            if(s[i][j] == 'O') ++cntO;
            if(s[i][j] == 'J') Jo[i][j] = cntO;
        }
    }
    for(int i = 0; i < W; ++i){
        int cntI = 0;
        for(int j = H - 1; j>= 0; --j){
            if(s[j][i] == 'I') ++cntI;
            if(s[j][i] == 'J') Ji[j][i] = cntI;
        }
    }/*
    for(int i = 0; i < H; ++i){
        for(int j = 0; j < W; ++j) cout << Jo[i][j] << " "; cout << endl;
    }cerr << endl;
    for(int i = 0; i < H; ++i){
        for(int j = 0; j < W; ++j) cout << Ji[i][j] << " "; cout << endl;
    }cerr << endl;
    */
    ll ans = 0;
    for(int i = 0; i < H; ++i){
        for(int j = 0; j < W; ++j){
            //cerr << Jo[i][j] * Ji[i][j] << endl;
            ans += 1LL*Jo[i][j] * Ji[i][j];
        }
    }
    return ans;
}

int main (){
    ios_base::sync_with_stdio(0); cin.tie(0);
    cin >> H >> W;
    for(int i = 0; i < H; ++i) cin >> s[i];
    cout << solve() << endl;

}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...