题意:找出一个最大的数字k使得整个数组a[n]里的所有组合都满足 k⋅|i−j|≤min(ai,aj)(1≤i,j≤n)
解题思路:k满足k⋅|i−j|≤min(ai,aj)——>k≤min(ai,aj)/|i−j|——>k<=min(ai/|i−j|,aj/|i−j|)
所以只要在该数组中找到最小的min(ai/(i-1),ai/(n-i)){注意两个最小}的值就为k
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n,ans=INT_MAX,d,m;
cin>>n;
for(int i=1;i<=n;i++)
{
d=max(i-1,n-i);
cin>>m;
ans=min(ans,m/d);
}
cout<<ans;
return 0;
}