This documentation is automatically generated by online-judge-tools/verification-helper
View the Project on GitHub ngthanhtrung23/ACM_Notebook_new
// Tính vị trí của xâu xoay vòng có thứ tự từ điển nhỏ nhất của xâu s[] // Tested: // - https://cses.fi/problemset/task/1110/ int minmove(string s) { int n = s.length(); int x, y, i, j, u, v; // x is the smallest string before string y for (x = 0, y = 1; y < n; ++ y) { i = u = x; j = v = y; while (s[i] == s[j]) { ++ u; ++ v; if (++ i == n) i = 0; if (++ j == n) j = 0; if (i == x) break; // All strings are equal } if (s[i] <= s[j]) y = v; else { x = y; if (u > y) y = u; } } return x; }
#line 1 "String/minmove.h" // Tính vị trí của xâu xoay vòng có thứ tự từ điển nhỏ nhất của xâu s[] // Tested: // - https://cses.fi/problemset/task/1110/ int minmove(string s) { int n = s.length(); int x, y, i, j, u, v; // x is the smallest string before string y for (x = 0, y = 1; y < n; ++ y) { i = u = x; j = v = y; while (s[i] == s[j]) { ++ u; ++ v; if (++ i == n) i = 0; if (++ j == n) j = 0; if (i == x) break; // All strings are equal } if (s[i] <= s[j]) y = v; else { x = y; if (u > y) y = u; } } return x; }