Submission #61487

#TimeUsernameProblemLanguageResultExecution timeMemory
61487sean617JOIOJI (JOI14_joioji)C++98
100 / 100
90 ms14592 KiB
#include <iostream> #include <cstdio> #include <set> #include <map> #define PI pair<int, int> using namespace std; int n, l, r, md, ans, mx, s[3][200005]; set<PI> v; map<PI, int> b1; string a; int main() { int i, z, t1, t2; cin >> n; cin >> a; a = ' ' + a; for (i = 1; i <= n;i++) { s[0][i] = s[0][i - 1]; s[1][i] = s[1][i - 1]; s[2][i] = s[2][i - 1]; if (a[i] == 'J') s[0][i]++; else if (a[i] == 'O') s[1][i]++; else s[2][i]++; } v.insert(PI(n, n)); b1[PI(n, n)] = 0; for (i = 1; i <= n; i++) { t1 = s[0][i] - s[1][i] + n; t2 = s[1][i] - s[2][i] + n; if (v.count(PI(t1, t2)) == 0) { v.insert(PI(t1, t2)); b1[PI(t1, t2)] = i; } else { mx = max(mx, i - b1[PI(t1, t2)]); } } cout << mx; // l = 0; // r = n / 3 + 1; // while (l < r) { // md = (l + r) / 2; // z = md * 3 - 1; // for (i = 1; i + z <= n; i++) { // if (s[0][i + z] - s[0][i - 1] == s[1][i + z] - s[1][i - 1] && s[2][i + z] - s[2][i - 1] == md) break; // } // if (i + z <= n) {ans = md; l = md + 1;} // else r = md; // } // cout << ans * 3; return 0; }

Compilation message (stderr)

joioji.cpp: In function 'int main()':
joioji.cpp:14:9: warning: unused variable 'z' [-Wunused-variable]
  int i, z, t1, t2;
         ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...