#include #include #include #include #include #include int main() { std::map, int> base; int N; std::cin >> N; for (int i = 0; i < N; ++i) { int v; std::cin >> v; ++base[std::make_pair(v, 0)]; } std::vector enemies(N); for (auto& v : enemies) { std::cin >> v; } int min = std::numeric_limits::max(); for (int i = 0; i < N; ++i) { auto now = base; for (int k = 0; k < N; ++k) { auto top = *now.begin(); if (--now[top.first] == 0) { now.erase(top.first); } auto n = top.first.first + enemies[(i + k) % N] / 2; auto u = top.first.second + 1; ++now[std::make_pair(n, u)]; } int max = 0; for (auto const& p : now) { max = std::max(max, p.first.second); } min = std::min(min, max); } std::cout << min << std::endl; }