Submission #208401

#TimeUsernameProblemLanguageResultExecution timeMemory
208401cstuartBitaro the Brave (JOI19_ho_t1)C++17
100 / 100
509 ms150528 KiB
#define _USE_MATH_DEFINES
#include <bits/stdc++.h>
using namespace std;
#define MOD 1000000007ll
#define EPS 1e-9

typedef long long         ll;
typedef long double       ld;
typedef pair <ll,ll>      pl;
typedef tuple <ll,ll,ll>  tl;

ll H, W, OC[3005][3005], IC[3005][3005], T;
char PL[3005][3005];

int main() {

	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	
	cin >> H >> W;
	for (ll i = 1; i <= H; i++) {
		for (ll j = 1; j <= W; j++) {
			cin >> PL[i][j];
		}
	}
	
	for (ll i = 1; i <= H; i++) {
		OC[i][W+1] = 0;
		for (ll j = W; j >= 1; j--) {
			OC[i][j] = OC[i][j+1];
			if (PL[i][j] == 'O') OC[i][j]++;
		}
	}
	
	for (ll j = 1; j <= W; j++) {
		IC[H+1][j] = 0;
		for (ll i = H; i >= 1; i--) {
			IC[i][j] = IC[i+1][j];
			if (PL[i][j] == 'I') IC[i][j]++;
		}
	}
	
	T = 0;
	for (ll i = 1; i <= H; i++) {
		for (ll j = 1; j <= W; j++) {
			if (PL[i][j] == 'J') T += OC[i][j] * IC[i][j];
		}
	}
	
	cout << T;
		
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...