#include using namespace std; using Int32 = int_fast32_t; using Word32 = uint_fast32_t; using Int64 = int_fast64_t; using Word64 = uint_fast64_t; using Int128 = __int128_t; using Word128 = __uint128_t; using Int = int_fast64_t; using Word = uint_fast64_t; using VInt = vector; using VVI = vector; using VWord = vector; using VVW = vector; using VS = vector; using VVS = vector; using VB = vector; using VVB = vector; using PII = pair; using PWW = pair; using VPII = vector; using VPWW = vector; #define SZ(x) ((Int)(x).size()) #define UNIQUE(v) v.erase(unique(v.begin(), v.end()), v.end()) #define rep(i,n) for(Int i=0, i##_len=(n); i> n; priority_queue> pq; rep(i,n) { Int tmp; cin >> tmp; pq.push(mp(tmp, 0)); } VInt enemy = VInt(n); rep(i,n) cin >> enemy[i]; priority_queue> copy_pq = pq; Int result_min = n + 1; rep(d,n) { Int max_battle = 0; pq = copy_pq; rep(i,n) { Int index = (i + d) % n; PII mons = pq.top(); pq.pop(); mons.first += enemy[index] / 2; mons.second++; pq.push(mons); if (mons.second > max_battle) max_battle = mons.second; } if(max_battle < result_min) result_min = max_battle; } cout << result_min << endl; return 0; }