Submission #448255

#TimeUsernameProblemLanguageResultExecution timeMemory
448255JovanB스탬프 수집 (JOI16_ho_t2)C++17
100 / 100
5 ms5324 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; ll pre[100005][3]; ll suf[100005][3]; int main(){ ios_base::sync_with_stdio(false), cin.tie(0); cout.precision(10); cout << fixed; int n; cin >> n; string s; cin >> s; for(int i=1; i<=n; i++){ pre[i][0] = pre[i-1][0]; pre[i][1] = pre[i-1][1]; pre[i][2] = pre[i-1][2]; if(s[i-1] == 'J'){ pre[i][0]++; } else if(s[i-1] == 'O'){ pre[i][1] += pre[i][0]; } else{ pre[i][2] += pre[i][1]; } } for(int i=n; i>=1; i--){ suf[i][0] = suf[i+1][0]; suf[i][1] = suf[i+1][1]; suf[i][2] = suf[i+1][2]; if(s[i-1] == 'I'){ suf[i][0]++; } else if(s[i-1] == 'O'){ suf[i][1] += suf[i][0]; } else{ suf[i][2] += suf[i][1]; } } ll res = 0; for(int i=0; i<=n; i++){ res = max(res, suf[i+1][1]); res = max(res, pre[i][1]); res = max(res, pre[i][0]*suf[i+1][0]); } cout << res + pre[n][2] << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...