Submission #384276

#TimeUsernameProblemLanguageResultExecution timeMemory
384276Drew_Bitaro the Brave (JOI19_ho_t1)C++14
100 / 100
239 ms88684 KiB
#include <iostream>
using namespace std;

#define ll long long

const int MAX = 3007;

char s[MAX][MAX];
int ingot[MAX][MAX];
int orb[MAX][MAX];

int main()
{
	ios :: sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);

	int n, m;
	cin >> n >> m;

	for (int i = 1; i <= n; ++i)
	{
		for (int j = 1; j <= m; ++j)
		{
			cin >> s[i][j];
			
			ingot[i][j] = (s[i][j] == 'I');
			orb[i][j] = (s[i][j] == 'O');

			ingot[i][j] += ingot[i-1][j];
			orb[i][j] += orb[i][j-1];
		}
	}

	ll res = 0;
	for (int i = 1; i <= n; ++i)
	{
		for (int j = 1; j <= m; ++j)
		{
			if (s[i][j] == 'J')
			{
				res += 1LL * (orb[i][m] - orb[i][j-1]) * (ingot[n][j] - ingot[i-1][j]);
			}
		}
	}

	cout << res << '\n';
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...