Submission #170582

#TimeUsernameProblemLanguageResultExecution timeMemory
170582WLZBitaro the Brave (JOI19_ho_t1)C++14
100 / 100
282 ms89764 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int h, w;
  cin >> h >> w;
  vector<string> grid(h);
  vector< vector<int> > cnt_o(h, vector<int>(w, 0)), cnt_i(h, vector<int>(w, 0)); 
  for (int i = 0; i < h; i++) {
    cin >> grid[i];
  }
  for (int i = h - 1; i >= 0; i--) {
    for (int j = w - 1; j >= 0; j--) {
      if (grid[i][j] == 'O') {
        cnt_o[i][j] = 1;
      }
      if (grid[i][j] == 'I') {
        cnt_i[i][j] = 1;
      }
      if (j < w - 1) {
        cnt_o[i][j] += cnt_o[i][j + 1];
      }
      if (i < h - 1) {
        cnt_i[i][j] += cnt_i[i + 1][j];
      }
    }
  }
  long long ans = 0;
  for (int i = 0; i < h; i++) {
    for (int j = 0; j < w; j++) {
      if (grid[i][j] == 'J') {
        ans += (long long) cnt_o[i][j] * (long long) cnt_i[i][j];
      }
    }
  }
  cout << ans << '\n';
  return 0; 
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...