题目链接:http://codeforces.com/problemset/problem/924/B
/*题解报告:题意要求(a[k]-a[j])/(a[k]-a[i])的最大值,
易知当a[j]和a[i]挨着的时候 上式会取的最大值,
即转化为求(a[k]-a[j])/(a[k]-a[j-1])的最大值,
要保证(a[k]-a[j])/(a[k]-a[j-1])式取得最大值就要使分子取得最大值,
即a[k]-a[j]取最大,
还有一个约束条件就是a[k]-a[j-1]<=U,j/i一定,a[k]越大越好,所以二分查找 使a[k]-a[j]取得最大。
*/
#include<stdio.h>
int main()
{
int n,u;
double a[100005];
while(scanf("%d%d",&n,&u)!=EOF)
{
for(int i=0;i<n;i++)
{
scanf("%lf",&a[i]);
}
double max=-1;
for(int i=1;i<n-1;i++)
{
if(a[i+1]-a[i-1]>u)
{
continue;
}
int l=i,r=n-1;
while(l<r)
{
int mid=(l+r+1)/2;
if(a[mid]-a[i-1]>u)
{
r=mid-1;
}
else
{
l=mid;
}
}
double div=(a[r]-a[i])/(a[r]-a[i-1]);
if(div>max)
{
max=div;
}
}
if(max==-1)
{
printf("-1\n");
}
else
{
printf("%.10f\n",max);
}
}
return 0;
}