diff --git a/cpp/2203/220309-CN.cpp b/cpp/2203/220309-CN.cpp new file mode 100644 index 0000000..94c5839 --- /dev/null +++ b/cpp/2203/220309-CN.cpp @@ -0,0 +1,39 @@ +#include +#include +#include + +class Solution { +public: + static int bestRotation(const std::vector& nums) { + int n = nums.size(), rotates[n]; + std::memset(rotates, 0, sizeof rotates); + + for (int i = 0; i < n; ++i) + if (nums[i] < n) + ++rotates[(i - nums[i] + 1 + n) % n]; + + int ret = 0, retMax = 0; + for (int i = 0; i < n; ++i) + if (nums[i] <= i) + ++retMax; + + int now = retMax; + for (int i = 1; i <= n; ++i) { + // i -> i + 1 + now -= rotates[i % n]; + if (nums[i - 1] < n) + ++now; + if (now > retMax) { + retMax = now; + ret = i; + } + } + return ret % n; + } +}; + +int main() { + std::cout << Solution::bestRotation({2,3,1,4,0}) << "\n"; + std::cout << Solution::bestRotation({1,3,0,2,4}); + return 0; +} diff --git a/cpp/2203/CMakeLists.txt b/cpp/2203/CMakeLists.txt index 1b94df8..35f8a5f 100644 --- a/cpp/2203/CMakeLists.txt +++ b/cpp/2203/CMakeLists.txt @@ -3,4 +3,4 @@ PROJECT(2203) SET(CMAKE_CXX_STANDARD 23) -ADD_EXECUTABLE(2203 220308-CN.cpp) +ADD_EXECUTABLE(2203 220309-CN.cpp)