Submission #1362164

#TimeUsernameProblemLanguageResultExecution timeMemory
1362164orgiloogiiBitaro the Brave (JOI19_ho_t1)C++20
100 / 100
180 ms221040 KiB
#include <bits/stdc++.h>
#define int long long
#define ff first
#define ss second
using namespace std;

signed main() {
    ios_base::sync_with_stdio(0);
    cin.tie(NULL);
    int n, m;
    cin >> n >> m;
    char s[n + 1][m + 1];
    vector <vector <int>> js, is, os;
    js.assign(n + 1, vector <int>(m + 1, 0));
    is.assign(n + 1, vector <int>(m + 1, 0));
    os.assign(n + 1, vector <int>(m + 1, 0));
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
            cin >> s[i][j];
        }
    }
    for (int i = 1; i <= n; i++) {
        for (int j = 1;j <= m;j++) {
            js[i][j] = js[i][j - 1] + js[i - 1][j] - js[i - 1][j - 1] + (s[i][j] == 'J');
            is[i][j] = is[i][j - 1] + is[i - 1][j] - is[i - 1][j - 1] + (s[i][j] == 'I');
            os[i][j] = os[i][j - 1] + os[i - 1][j] - os[i - 1][j - 1] + (s[i][j] == 'O');
        }
    }
    int ans = 0;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
            if (s[i][j] != 'J') continue;
            ans += (os[i][m] - os[i - 1][m] - os[i][j] + os[i - 1][j]) * (is[n][j] - is[n][j - 1] - is[i][j] + is[i][j - 1]);
        }
    }
    cout << ans << endl;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...