#include #include #include #include #include #include #include #include using namespace std; int main() { int N; cin >> N; vector A(N), B(N); for (int i = 0; i < N; i++) { cin >> A[i]; } for (int i = 0; i < N; i++) { int b; cin >> b; B[i] = b / 2; } typedef priority_queue, vector>, std::greater>> t; t orig; for (auto i : A) { orig.push(make_pair(i, 0)); } int ans = numeric_limits::max()/2; for (int i = 0; i < N; i++) { t q = orig; int tmp = 0; for (int j = 0; j < N; j++) { if (ans < tmp) break; int k = (i + j) % N; int a, n; tie(a, n) = q.top(); q.pop(); int b = B[k]; q.push(make_pair(a + b, n + 1)); tmp = max(tmp, n + 1); } ans = min(ans, tmp); } cout << ans << endl; return 0; }