#include <bits/stdc++.h>
using namespace std;
using ll = long long;
ll INF = 1e18;
ll MOD = 1e9 + 7;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
ll n, m;
cin >> n >> m;
vector<string> s(n);
for (ll i = 0; i < n; i++) {
cin >> s[i];
}
vector<vector<ll>> pref(n, vector<ll>(m + 1));
for (ll i = 0; i < n; i++) {
for (ll j = m - 1; j >= 0; j--) {
pref[i][j] = pref[i][j + 1];
if (s[i][j] == 'O') {
pref[i][j]++;
}
}
}
vector<vector<ll>> dp(n, vector<ll>(m));
for (ll j = 0; j < m; j++) {
if (s[0][j] == 'J') {
dp[0][j] = pref[0][j];
}
}
for (ll j = 0; j < m; j++) {
for (ll i = 1; i < n; i++) {
dp[i][j] = dp[i - 1][j];
if (s[i][j] == 'J') {
dp[i][j] += pref[i][j];
}
}
}
ll ans = 0;
for (ll i = 0; i < n; i++) {
for (ll j = 0; j < m; j++) {
if (s[i][j] == 'I') {
ans += dp[i][j];
}
}
}
cout << ans;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |