Kochiya Sanae is a lazy girl who makes and sells bread. She is an expert at bread making and selling. She can sell the i-th customer a piece of bread for price pi. But she is so lazy that she will fall asleep if no customer comes to buy bread for more than w minutes. When she is sleeping, the customer coming to buy bread will leave immediately. It's known that she starts to sell bread now and the i-th customer come after ti minutes. What is the minimum possible value of w that maximizes the average value of the bread sold?
Input
There are multiple test cases. The first line of input is an integer T ≈ 200 indicating the number of test cases.
The first line of each test case contains an integer 1 ≤ n ≤ 1000 indicating the number of customers. The second line contains n integers 1 ≤ pi ≤ 10000. The third line contains n integers 1 ≤ ti ≤ 100000. The customers are given in the non-decreasing order of ti.
OutputFor each test cases, output w and the corresponding average value of sold bread, with six decimal digits.
Sample Input2 4 1 2 3 4 1 3 6 10 4 4 3 2 1 1 3 6 10Sample Output
4.000000 2.500000 1.000000 4.000000
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1010;
double val[maxn],t[maxn];
/*
一道题卡的我们简直绝望,觉得我们什么情况都想了
可就是想不出来,觉得我们肯定是没有戏了,感觉实在是太难了
觉得自己一定是别不过来这个弯来,不得不说这个题真的是太牛了
我们只是考虑到一个答案的必要条件,并没有考虑到这是不是就是答案
的充分条件啊,看到答案了,觉得是,当时考虑的不周到,总是很难受,总是差一点,
我不想怎样,但是这个队友真的太自大了,没有办法把,还是努力做好自己吧
*/
int main()
{
int T;
scanf("%d",&T);
while(T--){
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%lf",&val[i]);
for(int i=1;i<=n;i++)scanf("%lf",&t[i]);
double ans=-1,w,sum=0,maxt=-1,ave;
for(int i=1;i<=n;i++){
sum+=val[i];
ave=sum/i;
maxt=max(maxt,t[i]-t[i-1]);
if(ave>ans){
if(i<n&&t[i]+maxt>=t[i+1])continue; //就是这句话,我几近绝望
ans=ave;
w=maxt;
}
}
printf("%.6f %.6f\n",w,ans);
}
return 0;
}