#include #include #include #include using namespace std; void output(int array[], int l) { cout << "["; for (int i = 0; i < l; i++) { cout << array[i] << ", "; } cout << "]" << endl; } int main(void) { int N; cin >> N; int A[N], B[N]; for (int i = 0; i < N; i++) { cin >> A[i]; } for (int i = 0; i < N; i++) { cin >> B[i]; } sort(A, A + N); int minimax = 1e+7; for (int h = 0; h < N; h++) { int level[N], battles[N]; for (int i = 0; i < N; i++) { battles[i] = 0; } memcpy(level, A, sizeof(A)); for (int i = 0; i < N; i++) { int nlevel = level[0] + B[(h+i)%N] / 2; int nbattles = battles[0] + 1; for (int j = 1; j < N + 1; j++) { if (nlevel < level[j] || (nlevel == level[j] && nbattles <= battles[j]) || j == N) { level[j-1] = nlevel; battles[j-1] = nbattles; break; } else { level[j-1] = level[j]; battles[j-1] = battles[j]; } } } //output(level, N); //output(battles, N); minimax = min(minimax, *max_element(battles, battles + N)); } cout << minimax << endl; return 0; }