http://blog.csdn.net/ffq5050139/article/details/7832991
http://blog.watashi.ws/1944/the-8th-zjpcpc/
http://blog.csdn.net/crescent__moon/article/details/16801097
1 #include<cstdio> 2 #include<cstring> 3 const int Max=100003; 4 double t[Max],p[Max],lev[Max]; 5 double max(double a,double b){ 6 return a>b?a:b; 7 } 8 int main(){ 9 int i,j,n,T; 10 double sum,ans,anst,w; 11 scanf("%d",&T); 12 while(T--){ 13 sum=ans=anst=0; 14 scanf("%d",&n); 15 for(i=0;i<n;i++) 16 scanf("%lf",&p[i]); 17 for(i=0;i<n;i++) 18 scanf("%lf",&t[i]); 19 20 lev[0]=t[0]; 21 //printf("lev[1] = %.6lf ",lev[0]); 22 for(i=1;i<n;i++){ 23 lev[i]=max(t[i]-t[i-1],lev[i-1]); 24 } 25 for(i=0;i<n;i++){ 26 w=lev[i]; 27 sum=0; 28 for(j=0;j<n;j++){ 29 if(w >= lev[j]) 30 sum += p[j]; 31 else 32 break; 33 } 34 35 if(ans < sum / j){ 36 ans=sum/j; 37 anst=w; 38 } 39 } 40 printf("%.6lf %.6lf ",anst,ans); 41 } 42 return 0; 43 }
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