Submission #200127

#TimeUsernameProblemLanguageResultExecution timeMemory
200127aloo123Bitaro the Brave (JOI19_ho_t1)C++14
100 / 100
589 ms159096 KiB
#include <iostream>
#include <algorithm>
#define ll long long
#define ld long double
#define f first
#define s second
#define mp make_pair
#define pb push_back
#define vll vector<ll>
#define pll pair<ll,ll>
using namespace std;

const ll N = 5e5+100;
const ll MOD = 1e9+7;
char grid[3005][3005];
ll orb[3005][3005];
ll ing[3005][3005];
int main()
{
    ios_base::sync_with_stdio(0);
    //cin.tie(0);

    ll n,m;
    cin>>n>>m;
    ll ans =0;
    for(int i =1;i<=n;i++)
        for(int j = 1;j<=m;j++)
            cin>>grid[i][j];
    

    for(int i =1;i<=n;i++){
        for(int j =1;j<=m;j++){
            orb[i][j] = orb[i][j-1];
            if(grid[i][j] == 'O') orb[i][j]++;
        }
    }   


    for(int i =1;i<=m;i++){
        for(int j =1;j<=n;j++) {
            ing[j][i] = ing[j-1][i];
            if(grid[j][i] =='I') ing[j][i]++;
        }
    }  

    for(int i =1;i<=n;i++){
        for(int j =1;j<=m;j++){
            if(grid[i][j] == 'J'){
                ll o = orb[i][m]-orb[i][j];
                ll inglets = ing[n][j] - ing[i][j];
                ans += (o*inglets);
            }
        }
    }

    cout<<ans<<endl;

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...