Submission #1163656

#TimeUsernameProblemLanguageResultExecution timeMemory
1163656ChaterBitaro the Brave (JOI19_ho_t1)C++20
100 / 100
478 ms207400 KiB
#include<bits/stdc++.h>
using namespace std;

#define int long long
#define ll long long
#define int long long
#define sc second
#define fr first
#define all(x) x.begin(),x.end()
#define roll(x) x.rbegin(),x.rend()
#define pb push_back
signed main(){
    /*ll n;
    cin >> n;
    vector<int> b(n+1);
    vector<int> a(n);
    for(ll i = 0;i<=n;i++){
        cin >> b[i];
    }
    for(ll i =0;i<n;i++){
        cin  >> a[i];
    }
    sort(all(b));
    sort(all(a));
    vector<int> ans(n+1);
    vector<int> ans2(n+1);
    for(ll i = 1;i<=n;i++){
        ans[i] = b[i] - a[i];
        ans[i] = max(ans[i-1],ans[i]);
    }
    for(ll i = 0;i<n;i++){
        ans2[i-1] = b[i] - a[i-1];
    }
    for(ll i = n-1;i>=0;i--){
        ans2[i] = max(ans2[i],ans2[i+1]);
    }
    for(ll i = 1;i<=n;i++){
        cout << ans[i-1] << " " << ans2[i] << endl;
    }*/
    ll n,m;
    cin >> n >> m;
    vector<pair<int,int>> a;
    vector<vector<int>> b(n+1,vector<int>(m+1));
    vector<vector<int>> c(n+1,vector<int>(m+1));
    for(ll i = 1;i<=n;i++){
        for(ll j = 1;j<=m;j++){
            char k;
            cin >> k;
            c[i][j] = c[i-1][j];
            b[i][j] = b[i][j-1];
            if(k == 'J')a.pb({i,j});
            if(k == 'O')b[i][j] += 1;
            if(k == 'I')c[i][j] += 1;
        }
    }
    ll ans = 0;
    for(ll i = 0;i<a.size();i++){
        ll x = a[i].fr;
        ll y = a[i].sc;
        ans += ((c[n][y] - c[x][y]) * (b[x][m] - b[x][y]));
    }
    cout << ans;
}



#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...