Submission #1271422

#TimeUsernameProblemLanguageResultExecution timeMemory
1271422kaiboy스탬프 수집 (JOI16_ho_t2)C++20
100 / 100
2 ms2888 KiB
#include <algorithm>
#include <iostream>

using namespace std;

const int N = 100000;

char cc[N + 1];
int ppj[N], qqi[N];
long long ppjo[N], qqoi[N];

int main() {
	ios_base::sync_with_stdio(false), cin.tie(NULL);
	int n; cin >> n >> cc;
	int kj = 0; long long kjo = 0, kjoi = 0;
	for (int i = 0; i < n; i++) {
		if (cc[i] == 'J')
			kj++;
		else if (cc[i] == 'O')
			kjo += kj;
		else
			kjoi += kjo;
		ppj[i] = kj;
		ppjo[i] = kjo;
	}
	int ki = 0; long long koi = 0;
	for (int i = n - 1; i >= 0; i--) {
		if (cc[i] == 'I')
			ki++;
		else if (cc[i] == 'O')
			koi += ki;
		qqi[i] = ki;
		qqoi[i] = koi;
	}
	long long ans = 0;
	for (int i = 0; i <= n; i++) {
		long long k = 0;
		if (i < n)
			k = max(k, qqoi[i]);
		if (i && i < n)
			k = max(k, (long long) ppj[i - 1] * qqi[i]);
		if (i)
			k = max(k, ppjo[i - 1]);
		ans = max(ans, kjoi + k);
	}
	cout << ans << '\n';
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...