#include <bits/stdc++.h>
using namespace std;
#define pf(a) printf("%.9f", a)
#define SZ size()
#define ll long long
#define pb push_back
#define BBC ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
void W2dNHK() {
ll h,w;
cin>>h>>w;
ll i,j;
char r[h+1][w+1];
ll a[h+1][w+1],b[h+1][w+1];
for(i=1 ; i<=h ; i++ ){
for(j=1 ; j<=w ; j++ ){
cin>>r[i][j];
a[i][j]=0;
b[i][j]=0;
}
}
for(i=1 ; i<=h ; i++ ){
if(r[i][w]=='O'){
a[i][w]=1;
}
for(j=w-1 ; j>=1 ; j-- ){
if(r[i][j]=='O'){
a[i][j]=a[i][j+1]+1;
}
else{
a[i][j]=a[i][j+1];
}
}
}
for(i=1 ; i<=w ; i++ ){
if(r[h][i]=='I'){
b[h][i]=1;
}
for(j=h-1 ; j>=1 ; j-- ){
if(r[j][i]=='I'){
b[j][i]=b[j+1][i]+1;
}
else{
b[j][i]=b[j+1][i];
}
}
}
ll sum=0;
for(i=1 ; i<=h ; i++ ){
for(j=1 ; j<=w ; j++ ){
if(r[i][j]=='J'){
sum+=a[i][j]*b[i][j];
}
}
}
cout<<sum;
}
int main() {
BBC
ll tc = 1;
//cin>>tc;
while (tc--) {
W2dNHK();
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |