Submission #106758

#TimeUsernameProblemLanguageResultExecution timeMemory
106758FiloSanzaBitaro the Brave (JOI19_ho_t1)C++14
100 / 100
451 ms88696 KiB
#include <bits/stdc++.h>

using namespace std;

int main(){
    cin.tie(0);
    cin.sync_with_stdio(0);

    int N, M;
    cin >> N >> M;

    vector<vector<char>> g(N, vector<char>(M));
    vector<vector<int>> i(N, vector<int>(M, 0)), o(N, vector<int>(M, 0));

    for(auto &i : g)
    for(auto &j : i)
        cin >> j;

    int cont;
    for(int ii=0; ii<N; ii++){
        cont = 0;
        for(int jj=M-1; jj>=0; jj--){
            if(g[ii][jj] == 'O') cont ++;
            if(g[ii][jj] == 'J') o[ii][jj] = cont;
        }
    }

    for(int ii=0; ii<M; ii++){
        cont = 0;
        for(int jj=N-1; jj>=0; jj--){
            if(g[jj][ii] == 'I') cont ++;
            if(g[jj][ii] == 'J') i[jj][ii] = cont;
        }
    }

    long long ans = 0;
    for(int ii=0; ii<N; ii++){
        for(int jj=0; jj<M; jj++) if(g[ii][jj] == 'J'){
            ans += 1LL * i[ii][jj] * o[ii][jj];
           // cout << ii << " " << jj << ": " << 1LL * i[ii][jj] * o[ii][jj] << "\n";
        }
    }

    cout << ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...