Submission #1315508

#TimeUsernameProblemLanguageResultExecution timeMemory
1315508AgageldiBitaro the Brave (JOI19_ho_t1)C++20
100 / 100
160 ms166556 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define N 500005

int tc = 1, n, a[N], ans, m;
string s[N];

int32_t main() {
    ios::sync_with_stdio(0);cin.tie(0);
    cin >> n >> m;
    vector <vector <int>> O(n + 5, vector <int> (m + 5, 0)), I(m + 5, vector <int> (n + 5, 0));
    for(int i = 1; i <= n; i++) {
        cin >> s[i];
        s[i] = '.' + s[i]; 
    }
    for(int i = 1; i <= n; i++) {
        for(int j = m; j >= 1; j--) {
            O[i][j] = O[i][j + 1] + (s[i][j] == 'O');
        }
    }
    for(int i = 1;i <= m; i++) {
        for(int j = n; j >= 1; j--) {
            I[i][j] = I[i][j + 1] + (s[j][i] == 'I');
        }
    }
    for(int i=1; i <= n; i++) {
        for(int j = 1; j <= m; j++) {
            if(s[i][j] == 'J') {
                ans += (O[i][j]) * I[j][i];
                // for(int k = i + 1; k <= n; k++) {
                //     if(s[k][j] == 'I') {
                        // cout << i << " " << j << " " << k << " " << l << '\n';
                //     }
                // }
            }
        }
    }
    cout << ans << '\n';
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...