Submission #543734

#TimeUsernameProblemLanguageResultExecution timeMemory
543734tudorBitaro the Brave (JOI19_ho_t1)C++17
100 / 100
405 ms91060 KiB
#include <iostream>
#include <string>

using namespace std;
const int nmax = 3000;
string s[nmax];
int O[nmax][nmax + 1];
int I[nmax + 1][nmax];
int main() {
    int n, m;
    cin >> n >> m;
    for ( int i = 0; i < n; i++ )
        cin >> s[i];

    for ( int i = 0; i < n; i++ )
        for ( int j = m - 1; j >= 0; j-- )
            O[i][j] = O[i][j + 1] + ( s[i][j] == 'O' );

    for ( int j = 0; j < m; j++ )
        for ( int i = n - 1; i >= 0; i-- )
            I[i][j] = I[i + 1][j] + ( s[i][j] == 'I' );

    long long cate = 0;
    for ( int i = 0; i < n; i++ )
        for ( int j = 0; j < m; j++ )
            if ( s[i][j] == 'J' )
                cate += ( long long ) O[i][j + 1] * I[i + 1][j];

    cout << cate;

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...