#include <bits/stdc++.h>
#define int long long
using namespace std;
const long long N = 2e5 + 5;
char a[3005][3005];
int so[3005][3005];
int si[3005][3005];
void solve()
{
int n, m;
cin >> n >> m;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cin >> a[i][j];
}
}
for (int i = 0; i < n; i++)
{
for (int j = m; j >= 0; j--)
{
so[i][j] += so[i][j + 1] + (a[i][j] == 'O');
}
}
for (int i = n; i >= 0; i--)
{
for (int j = 0; j < m; j++)
{
si[i][j] += si[i + 1][j] + (a[i][j] == 'I');
}
}
int ans = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if (a[i][j] == 'J')
{
ans += si[i][j] * so[i][j];
}
}
}
// for (int i = 0; i < n; i++)
// {
// for (int j = 0; j < m; j++)
// {
// cout << a[i][j] << endl;
// }
// }
cout << ans << endl;
}
signed main()
{
ios_base::sync_with_stdio(0);
cin.tie(NULL);
cout.tie(NULL);
int t = 1;
// cin >> t;
for (int i = 1; i <= t; i++)
{
// cout << "Case #" << i << ':' << ' ';
solve();
cout << endl;
}
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |