Let’s call an array of non-negative integers a1,a2,…,an a k-extension for some non-negative integer k if for all possible pairs of indices 1≤i,j≤n the inequality k⋅|i−j|≤min(ai,aj) is satisfied. The expansion coefficient of the array a is the maximal integer k such that the array a is a k-extension. Any array is a 0-expansion, so the expansion coefficient always exists.
You are given an array of non-negative integers a1,a2,…,an. Find its expansion coefficient.
Input
The first line contains one positive integer n — the number of elements in the array a (2≤n≤300000). The next line contains n non-negative integers a1,a2,…,an, separated by spaces (0≤ai≤109).
Output
Print one non-negative integer — expansion coefficient of the array a1,a2,…,an.
Examples
inputCopy
4
6 4 5 5
outputCopy
1
inputCopy
3
0 1 2
outputCopy
0
inputCopy
4
821 500 479 717
outputCopy
239
Note
In the first test, the expansion coefficient of the array [6,4,5,5] is equal to 1 because |i−j|≤min(ai,aj), because all elements of the array satisfy ai≥3. On the other hand, this array isn’t a 2-extension, because 6=2⋅|1−4|≤min(a1,a4)=5 is false.
In the second test, the expansion coefficient of the array [0,1,2] is equal to 0 because this array is not a 1-extension, but it is 0-extension.
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<ctime>
#include<iostream>
#include<algorithm>
#include<map>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<string>
#define ll long long
#define dd double
using namespace std;
struct node {
ll x, y, z;
}s[300005];
int main() {
ll n;
cin >> n;
ll flag = 0;
ll minn = 10000000000;
ll maxx;
ll p;
for (ll i = 0; i < n; i++) {
cin >> s[i].x;
p = n - i - 1;
if (p < 0) {
p = -p;
}
maxx = max(i, p);
s[i].y = (s[i].x / maxx);
minn = min(minn, s[i].y);
}
cout << minn << endl;
}