Submission #997945

#TimeUsernameProblemLanguageResultExecution timeMemory
997945elojBitaro the Brave (JOI19_ho_t1)C++14
100 / 100
412 ms215268 KiB
#include <bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define ll long long
#define pb push_back
#define pii pair<ll,ll>

ll psi[3001][3001], pso[3001][3001];
int main(){
    ll ans=0;
    ll n, m;
    cin >> n >> m;
    char c[n+1][m+1];
    vector <pii> pos;
    
    for(int i=0; i<n; i++){
        for(int j=0; j<m; j++){
            cin >> c[i][j];
            if(j>0) pso[i][j]=pso[i][j-1];
            if(i>0) psi[i][j]=psi[i-1][j];
            if(c[i][j] == 'J') pos.pb({i,j});
            else if(c[i][j] == 'O'){
                if(j>0) pso[i][j]++;
                else pso[i][j]=1;
            }
            else{
                if(i>0) psi[i][j]++;
                else psi[i][j]=1;
            }
        }
    }
    // for(int i=0; i<n; i++){
    //     cout << psi[i][0] << " ";
    // }
    for(auto x:pos){
        ll a=x.ff, b=x.ss;
        ll I=psi[n-1][b]-psi[a][b], O=pso[a][m-1]-pso[a][b];
        // cout << I*O << endl;
        ans+=I*O;
    }
    cout << ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...