Submission #1005645

#TimeUsernameProblemLanguageResultExecution timeMemory
1005645MarwenElarbiBitaro the Brave (JOI19_ho_t1)C++17
100 / 100
180 ms88340 KiB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
using namespace std;
using namespace __gnu_pbds;
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#define fi first
#define se second
#define ll long long
#define pb push_back
#define ii pair<int,int>
template <class T>
using Tree = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
const int nax=2e3+5;
#define optimise ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
int main()
{
    /*#ifndef ONLINE_JUDGE
        freopen("input.txt", "r", stdin);
        freopen("output.txt", "w", stdout);
    #endif*/
    optimise;   
    int n,m;
    cin>>n>>m;
    char grid[n][m];
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j < m; ++j)
        {
            cin>>grid[i][j];
        }
    }
    long long ans=0;
    int xx[n][m];
    int yy[n][m];
    for (int i = 0; i < n; ++i)
    {
        int cur=0;
        for (int j = m-1; j >= 0; --j)
        {
            if(grid[i][j]=='O') cur++;
            xx[i][j]=cur;
        }
    }
    for (int j = 0; j < m; ++j)
    {
        int cur=0;
        for (int i = n-1; i >= 0; --i)
        {
            if(grid[i][j]=='I') cur++;
            yy[i][j]=cur;
        }
    }
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j < m; ++j)
        {
            if(grid[i][j]=='J'){
                ans+=yy[i][j]*xx[i][j];
            }
        }
    }
    cout <<ans<<endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...