#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
ll n,m;
cin>>n>>m;
vector<vector<ll>> a(n,vector<ll>(m));
for(int i=0;i<n;i++)
{
string s;
cin>>s;
for(int j=0;j<m;j++)
{
if(s[j]=='J')
{
a[i][j]=0;
}
else if(s[j]=='O')
{
a[i][j]=1;
}
else
{
a[i][j]=2;
}
}
}
vector<vector<ll>> r(n),c(m);
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(a[i][j]==1)
{
r[i].push_back(j);
}
}
}
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
if(a[j][i]==2)
{
c[i].push_back(j);
}
}
}
ll ans=0;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(a[i][j]==0)
{
ll it1=upper_bound(r[i].begin(),r[i].end(),j)-r[i].begin();
ll it2=upper_bound(c[j].begin(),c[j].end(),i)-c[j].begin();
ans=ans+((ll)r[i].size()-it1)*((ll)c[j].size()-it2);
}
}
}
cout<<ans;
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... |