Submission #1150980

#TimeUsernameProblemLanguageResultExecution timeMemory
1150980h1euctBitaro the Brave (JOI19_ho_t1)C++20
100 / 100
296 ms150416 KiB
#include<bits/stdc++.h>
using namespace std;

#define fi first
#define se second

#define int long long

const int MX = 3e3 + 5;
const int MOD = 1e9 + 7;

int m, n;
char a[MX][MX];
int oo[MX][MX], ii[MX][MX];

signed main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	// int test; cin>>test; while (test--) {}	
	cin >> m >> n;
	for (int i = 1; i <= m; i++) {
		for (int j = 1; j <= n; j++) {
			cin >> a[i][j];
		}
	}
	for (int i = 1; i <= m; i++) {
		for (int j = 1; j <= n; j++) {
			oo[i][j] = oo[i][j - 1] + (a[i][j] == 'O');
		}
	}
	for (int j = 1; j <= n; j++) {
		for (int i = 1; i <= m; i++) {
			ii[i][j] = ii[i - 1][j] + (a[i][j] == 'I');
		}
	}
	int fn = 0;
	// cout << ii[m][1] - ii[1][1] << '\n';
	for (int i = 1; i <= m; i++) {
		for (int j = 1; j <= n; j++) {
			// for (int k = i + 1; k <= m; k++) {
				// for (int l = j + 1; l <= n; l++) {
					// if (a[i][j] == 'J' && a[i][l] == 'O' && a[k][j] == 'I') fn++;
				// }
			// }
			if (a[i][j] == 'J') {
				int f1 = oo[i][n] - oo[i][j];
				int f2 = ii[m][j] - ii[i][j];
				// cerr << i << ' ' << j << ' ' << f1 << ' ' << f2 << '\n';
				fn += f1 * f2;
			}
		}
	}
	cout << fn;
	return 0;
}
// binhtinhtutinkhongcaycunhungmotkhikhongcontutinnualatuyetvong
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...