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.
Output
For each test cases, output w and the corresponding average value of sold bread, with six decimal digits.
Sample Input
2 4 1 2 3 4 1 3 6 10 4 4 3 2 1 1 3 6 10
Sample Output
4.000000 2.500000 1.000000 4.000000
#include <bits/stdc++.h> using namespace std; const int N = 1e4 + 10; int t, n; double p[N], pp[N], v[N], vv[N]; struct xx{ double p, v; int n; }a[N]; bool cmp(xx a, xx b){ if(a.p == b.p) return a.v < b.v; return a.p > b.p; } int main(){ scanf("%d", &t); while(t--){ scanf("%d", &n); double sum = 0, maxi = 0; int ii = 0; for(int i = 1; i <= n; i++){ scanf("%lf", &p[i]); p[i] += p[i-1]; //printf("%.3f ", p[i]); } //printf("\n"); for(int i = 1; i <= n; i++){ scanf("%lf", &v[i]); double tmp = v[i]-v[i-1]; vv[i] = max(vv[i-1], tmp); //printf("%.3f ", vv[i]); } //printf("\n"); v[n+1] = 0x3f3f3f3f; int x = 0; for(int i = 1; i <= n; i++){ if(vv[i] < v[i+1]- v[i]){ a[x].v = vv[i]; a[x].p = p[i]/i*1.0; x++; } } sort(a, a+x, cmp); printf("%.6f %.6f\n", a[0].v, a[0].p); } }