#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
int main() {
cin.tie(0) -> sync_with_stdio(0);
int h, w;
cin >> h >> w;
vector<vector<char>> grid(h + 1, vector<char>(w + 1, ' '));
vector<vector<int>> I(h + 1, vector<int>(w + 1, 0));
vector<vector<int>> O(h + 1, vector<int>(w + 1, 0));
for (int i = 1; i<=h; ++i) {
string l; cin >> l;
for (int j = 1; j<=w; ++j) grid[i][j] = l[j - 1];
}
for (int i = 1; i<=h; ++i) for (int j = 1; j<=w; ++j) O[i][j] += O[i][j - 1] + (grid[i][j] == 'O');
for (int j = 1; j<=w; ++j) for (int i = 1; i<=h; ++i) I[i][j] += I[i - 1][j] + (grid[i][j] == 'I');
// for (auto &v: O) {
// for (int &i: v) cout << i << ' ';
// cout << '\n';
// }
// cout << '\n';
// for (auto &v: I) {
// for (int &i: v) cout << i << ' ';
// cout << '\n';
// }
int res = 0;
for (int i = 1; i<=h; ++i) {
for (int j = 1; j<=w; ++j) {
if (grid[i][j] == 'J') {
// cout << i << ' ' << j << ": ";
int oc = O[i][w] - O[i][j];
int ic = I[h][j] - O[i][j];
// cout << oc << " x " << ic << '\n';
res += (oc * ic);
}
}
}
cout << res << '\n';
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |