Submission #1310342

#TimeUsernameProblemLanguageResultExecution timeMemory
1310342bahaktlBitaro the Brave (JOI19_ho_t1)C++20
100 / 100
346 ms174984 KiB
#include <bits/stdc++.h>

#define int long long 
#define pb push_back
using namespace std;

const int N=3500;
const int inf=5e18;
const int mod=1e9+7;

char a[N][N];

int suff[N][N],suff1[N][N];

signed main() {
    ios_base::sync_with_stdio(NULL);
    cin.tie(NULL);
    int T=1;
    // cin>>T;
    while(T--) {
        int n,m;
        cin>>n>>m;
        for(int i=1;i<=n;i++) {
            for(int j=1;j<=m;j++) {
                cin>>a[i][j];
            }
        }
        for(int i=1;i<=n;i++) {
            for(int j=m;j>=1;j--) {
                suff[i][j]=suff[i][j+1];
                if(a[i][j]=='O') suff[i][j]++;
            }
        }
        for(int j=1;j<=m;j++) {
            for(int i=n;i>=1;i--) {
                suff1[i][j]=suff1[i+1][j];
                if(a[i][j]=='I') suff1[i][j]++;
            }
        }
        // for(int i=1;i<=n;i++) {
        //     for(int j=1;j<=m;j++) {
        //         cout<<suff[i][j]<<' ';
        //     }
        //     cout<<"\n";
        // }
        // cout<<"\n";
        // for(int i=1;i<=n;i++) {
        //     for(int j=1;j<=m;j++) {
        //         cout<<suff1[i][j]<<' ';
        //     }
        //     cout<<"\n";
        // }
        int ans=0;
        for(int i=1;i<=n;i++) {
            for(int j=1;j<=m;j++) {
                if(a[i][j]!='J') continue;
                ans+=suff[i][j]*suff1[i][j]; 
            }
        }
        cout<<ans<<"\n";
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...