Submission #1355507

#TimeUsernameProblemLanguageResultExecution timeMemory
1355507mamuka1111Bitaro the Brave (JOI19_ho_t1)C++20
100 / 100
239 ms152968 KiB
// Source: https://usaco.guide/general/io 
#include <bits/stdc++.h>
#include <sys/types.h>
using namespace std;
 
#define int long long
 
const int N=3*1e5, M=21;
int pre1[N], pre2[N];
//int arr[N];
int dp2[2];
int dp[N];
//int cnt[N],p[N];
const int mod=1e9+7;
int k,max2,m;


int sum=1,ans=0;;
string s,s1;
set<int> st;
bool check=true;
vector<int> nums2;

int O[3005][3005],I[3005][3005];


 
signed main(){
    int n,t,n1,q,m;
    //int c,d,x1,y1,l,r,sum,g,i,k,k1,g1,g2,e,b,u,v,a;
 
    
    t=1; //cin>>t;
    while (t>0){
        t--;
        cin>>n>>m;
        string arr[n+5];
        for (int i=0; i<n; i++){
            cin>>arr[i];
        }
        int x=0;
        for (int i=0; i<n; i++){
            x=0;
            for (int j=0; j<m; j++){
                if (arr[i][j]=='O') x++;
                O[i][j]=x;
            }
        }

        int y=0;
        for (int j=0; j<m; j++){
            y=0;
            for (int i=0; i<n; i++){
                if (arr[i][j]=='I') y++;
                I[j][i]=y;
            }
        }
        ans=0;
        for (int i=0; i<n; i++){
            for (int j=0; j<m; j++){
                if (arr[i][j]=='J'){
                    ans=ans+(O[i][m-1]-O[i][j])*(I[j][n-1]-I[j][i]);
                    //cout<<"A";
                }
            }
        }
        //cout<<O[0][1]; return 0;
        // int i=1;
        // int j=0;
        // cout<<(O[i][m-1]-O[i][j])*(I[j][n-1]-I[j][i]); return 0;
        cout<<ans;


}  
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...