Submission #287344

#TimeUsernameProblemLanguageResultExecution timeMemory
287344reymontada61Bitaro the Brave (JOI19_ho_t1)C++14
100 / 100
801 ms159292 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
const int MXN = 3005;
int h, w;
string grid[MXN];
int sufo[MXN][MXN];
int lowi[MXN][MXN];

signed main() {

	cin >> h >> w;
	for (int i=1; i<=h; i++) {
		cin >> grid[i];
		grid[i] = ' ' + grid[i];
	}
	
	for (int i=1; i<=h; i++) {
		for (int j=w; j>=1; j--) {
			sufo[i][j] = sufo[i][j+1];
			if (grid[i][j] == 'O') {
				sufo[i][j]++;
			}
		}
	}
	
	for (int j=1; j<=w; j++) {
		for (int i=h; i>=1; i--) {
			lowi[i][j] = lowi[i+1][j];
			if (grid[i][j] == 'I') {
				lowi[i][j]++;
			}
		}
	}
	
	int x = 0;
	for (int i=1; i<=h; i++) {
		for (int j=1; j<=w; j++) {
			if (grid[i][j] == 'J') {
				x += (sufo[i][j] * lowi[i][j]);
			}
		}
	}
	
	cout << x << endl;
	
	

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