Submission #1146147

#TimeUsernameProblemLanguageResultExecution timeMemory
1146147AlgorithmWarriorBitaro the Brave (JOI19_ho_t1)C++20
100 / 100
449 ms79820 KiB
#include <bits/stdc++.h>

using namespace std;

int const MAX=3005;
char mat[MAX][MAX];
int drO[MAX][MAX];
int subI[MAX][MAX];
int n,m;

void read(){
    cin>>n>>m;
    int i,j;
    for(i=1;i<=n;++i)
        for(j=1;j<=m;++j)
            cin>>mat[i][j];
}

void precalc(){
    int i,j;
    for(i=1;i<=n;++i)
        for(j=m;j;--j)
            drO[i][j]=drO[i][j+1]+(mat[i][j+1]=='O');
    for(j=1;j<=m;++j)
        for(i=n;i;--i)
            subI[i][j]=subI[i+1][j]+(mat[i+1][j]=='I');
}

long long solve(){
    long long ans=0;
    int i,j;
    for(i=1;i<=n;++i)
        for(j=1;j<=m;++j)
            if(mat[i][j]=='J')
                ans+=drO[i][j]*subI[i][j];
    return ans;
}

void write(long long ans){
    cout<<ans;
}

int main()
{
    read();
    precalc();
    write(solve());
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...