Submission #1133544

#TimeUsernameProblemLanguageResultExecution timeMemory
1133544nuutsnoynton스탬프 수집 (JOI16_ho_t2)C++20
100 / 100
5 ms2888 KiB
#include<bits/stdc++.h>

using namespace std;
using ll = long long;
ll 	J[100005], O[100002], I[100002];
int main() {
	ll n, m, r, x, y, i,p, j,cnt1,cnt, ans, t,s, mx, mn, k;
	
	string str;
	
	cin >> n >> str;
	
	for (i = 0; i < n; i ++) {
		J[i + 1] = J[i];
		O[i + 1] = O[i];
		I[i + 1] = I[i];
		if ( str[i] == 'J') J[i + 1] ++;
		if ( str[i] == 'O') O[i + 1] ++;
		if ( str[i] == 'I') I[i + 1] ++;
	}
	ans= 0;
	for (i = 1; i <= n; i ++) {
		if ( str[i - 1] == 'O') {
			ans = ans + (J[i] * (I[n] - I[i ]));
		}
	}
	// J
	cnt = 0;
	cnt1 = 0;
	for (i = n; i >= 1; i --) {
		if ( str[i - 1] == 'I') cnt1 ++;
		if ( str[i - 1] == 'O') cnt += cnt1;
	}
	p = cnt;
	// I
	cnt= cnt1 = 0;
	for (i =0; i < n; i ++) {
		if ( str[i] == 'J') cnt1 ++;
		if ( str[i] == 'O') cnt += cnt1;
	}
	p =max(p, cnt);
	for (i = 1; i < n; i ++) {
		p = max(p, J[i] *(I[n] - I[i]));
	}
	cout << ans + p << endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...