Submission #990080

#TimeUsernameProblemLanguageResultExecution timeMemory
990080coftochkaBitaro the Brave (JOI19_ho_t1)C++17
20 / 100
9 ms15196 KiB
#include <iostream>
#include <cstring>

using namespace std;

const int N = 3030;
int O[N][N];
int I[N][N];
string s[N];
int n, m;


void input(){
    cin >> n >> m;
    for (int i = 0; i < n; ++i){
        cin >> s[i];
    }
    
}

void preprocess(){
    for (int i = 0; i < n; ++i){
        O[i][m] = 0;
        for (int j = m - 1; j >= 0; --j){
            O[i][j] = O[i][j + 1];
            if (s[i][j] == 'O'){
                ++O[i][j];
            }
        }
    }
    for (int j = 0; j < m; ++j){
        I[n][j] = 0;
        for (int i = n - 1; i >= 0; --i){
            I[i][j] = I[i + 1][j];
            if (s[i][j] == 'I'){
                ++I[i][j];
            }
        }
    }
}

int solve(){
    long long ans = 0;
    for (int i = 0; i < n; ++i){
        for (int j = 0; j < m; ++j){
            if (s[i][j] == 'J'){
                ans += O[i][j] * I[i][j];
            }
        }
    }
    return ans;
}

int main(){
    input();
    preprocess();
    cout << solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...