Submission #1313338

#TimeUsernameProblemLanguageResultExecution timeMemory
1313338nicolo_010Bitaro the Brave (JOI19_ho_t1)C++20
100 / 100
122 ms80940 KiB

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
#define f first
#define s second

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	int n, m; cin >> n >> m;
	vector<string> grid(n);
	for (int i=0; i<n; i++) {
		cin >> grid[i];
	}
	vector<vector<int>> ingots(m, vector<int>(n));
	for (int j=0; j<m; j++) {
		ingots[j][n-1] = 0;
		for (int i=n-2; i>=0; i--) {
			ingots[j][i] = ingots[j][i+1] + (grid[i+1][j] == 'I');
		}
	}
	vector<vector<int>> orbs(n, vector<int>(m));
	for (int i=0; i<n; i++) {
		orbs[i][m-1] = 0;
		for (int j=m-2; j>=0; j--) {
			orbs[i][j] = orbs[i][j+1] + (grid[i][j+1] == 'O');
		}
	}
	ll ans=0;
	for (int i=0; i<n; i++) {
		for (int j=0; j<m; j++) {
			if (grid[i][j] == 'J') {
				ans += (orbs[i][j]*ingots[j][i]);
			}
		}
	}
	cout << ans << "\n";
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...