output_description: Print the maximum possible that a train can cover in the run.  
  Output is considered correct if its absolute difference from the judge's
  output is at most 10^{-3}.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
      t_1 t_2 t_3 … t_N
      v_1 v_2 v_3 … v_N
attempt: import numpy as np
  
  N = int(input())
  T = list(map(int, input().split()))
  V = list(map(int, input().split()))
  
  MAX_V = [0]
  for t, v in zip(T, V):
      MAX_V[-1] = min(MAX_V[-1], v)
      for _ in range(t * 2):
          MAX_V.append(v)
      # print(MAX_V)
      # print(len(MAX_V))
  
  timelistsize = len(MAX_V)
  REAL_V = [0] * timelistsize
  
  # スピードが加速する部分の速度を表現
  for i in range(1, timelistsize):
      REAL_V[i] = min(REAL_V[i - 1] + 0.5, MAX_V[i])
  
  # 終了位置から同じようにして減速部分の速度を表現
  REAL_V[-1] = 0
  for i in range(timelistsize - 1, 0, -1):
      REAL_V[i - 1] = min(REAL_V[i] + 0.5, REAL_V[i - 1])
  
  
  # 0.5秒刻みの速度ができているので、0.5を高さ,0.5秒ごとの速度を上辺,下辺とした台形面積を足す
  answer = 0
  for i in range(timelistsize - 1):
      answer += (REAL_V[i] + REAL_V[i + 1]) * 0.5 / 2
  print(answer)
  
  """
  tsum=np.sum(t)
  print(tsum)
   
  Ruisekit=[t[0]]
   
  for i in range(1,N):
    Ruisekit.append(t[i]+Ruisekit[i-1])
    
  print(Ruisekit)
   
   
   
   
  downstart=[]
   
  for i in range(N-1):
    if v[i]>v[i+1]:
      downstart.append(t[i]-(v[i]-v[i+1]))
   
  print(downstart)
   
  velocity=0
  downindex=0
   
  if downstart:
    nextdownstarttime=downstart[downindex]
   
  state='up'
  upstarttime=0
  upstartspeed=0
  answer=0
  maxspeed=v[0]
  maxspeedindex=0
   
  for time in range(1,tsum+1):
    if state=='up':
      velocity+=1
      #print('velocity:',velocity)
      #print('time',time)
    if state=='down':
      velocity-=1
    if time==nextdownstarttime:
      if state=='plane':
        answer+=(time-planestarttime)*speed
      state='down'
      print(state)
      downstarttime=time
      downstartspeed=speed
      downindex+=1
      if downindex<len(downstart):
        nextdownstarttime=downstart[downindex]
    if time==Ruisekit[maxspeedindex]:
      maxspeedindex+=1
      if maxspeedindex<len(v):
        maxspeed=v[maxspeedindex]
    if velocity==maxspeed and state!='plane':
      if state=='up':
        answer+=(time-upstarttime)*(velocity-upstartspeed)*0.5
        answer+=(time-upstarttime)*upstartspeed
      if state=='down':
        answer+=(time-downstarttime)*(downstartspeed-velocity)*0.5
        answer+=(time-downstarttime)*downstartspeed
      
      state='plane'
      planestarttime=time
      speed=velocity
      
    print(answer,time,maxspeed,velocity,state)
  """
  
problem_description: Statement
  
  In the year 2168, AtCoder Inc., which is much larger than now, is starting a
  limited express train service called _AtCoder Express_.
  
  In the plan developed by the president Takahashi, the trains will run as
  follows:
  
    * A train will run for (t_1 + t_2 + t_3 + ... + t_N) seconds.
    * In the first t_1 seconds, a train must run at a speed of at most v_1 m/s (meters per second). Similarly, in the subsequent t_2 seconds, a train must run at a speed of at most v_2 m/s, and so on.
  
  According to the specifications of the trains, the acceleration of a train
  must be always within ±1m/s^2. Additionally, a train must stop at the
  beginning and the end of the run.
  
  Find the maximum possible distance that a train can cover in the run.
samples: [{"input": "1\n    100\n    30", "output": "2100.000000000000000\n    \n\n![ ](https://img.atcoder.jp/abc076/69c1f4241b608bc36f1f08dd4184d3f0.png)\n\nThe maximum distance is achieved when a train runs as follows:\n\n  * In the first 30 seconds, it accelerates at a rate of 1m/s^2, covering 450 meters.\n  * In the subsequent 40 seconds, it maintains the velocity of 30m/s, covering 1200 meters.\n  * In the last 30 seconds, it decelerates at the acceleration of -1m/s^2, covering 450 meters.\n\nThe total distance covered is 450 \\+ 1200 \\+ 450 = 2100 meters.\n\n* * *"}, {"input": "2\n    60 50\n    34 38", "output": "2632.000000000000000\n    \n\n![ ](https://img.atcoder.jp/abc076/a3e07ea723f50df04461165bc2cc8890.png)\n\nThe maximum distance is achieved when a train runs as follows:\n\n  * In the first 34 seconds, it accelerates at a rate of 1m/s^2, covering 578 meters.\n  * In the subsequent 26 seconds, it maintains the velocity of 34m/s, covering 884 meters.\n  * In the subsequent 4 seconds, it accelerates at a rate of 1m/s^2, covering 144 meters.\n  * In the subsequent 8 seconds, it maintains the velocity of 38m/s, covering 304 meters.\n  * In the last 38 seconds, it decelerates at the acceleration of -1m/s^2, covering 722 meters.\n\nThe total distance covered is 578 \\+ 884 \\+ 144 \\+ 304 \\+ 722 = 2632 meters.\n\n* * *"}, {"input": "3\n    12 14 2\n    6 2 7", "output": "76.000000000000000\n    \n\n![ ](https://img.atcoder.jp/abc076/77f821f590cb19d8e449303a102422dc.png)\n\nThe maximum distance is achieved when a train runs as follows:\n\n  * In the first 6 seconds, it accelerates at a rate of 1m/s^2, covering 18 meters.\n  * In the subsequent 2 seconds, it maintains the velocity of 6m/s, covering 12 meters.\n  * In the subsequent 4 seconds, it decelerates at the acceleration of -1m/s^2, covering 16 meters.\n  * In the subsequent 14 seconds, it maintains the velocity of 2m/s, covering 28 meters.\n  * In the last 2 seconds, it decelerates at the acceleration of -1m/s^2, covering 2 meters.\n\nThe total distance covered is 18 \\+ 12 \\+ 16 \\+ 28 \\+ 2 = 76 meters.\n\n* * *"}, {"input": "1\n    9\n    10", "output": "20.250000000000000000\n    \n\n![ ](https://img.atcoder.jp/abc076/ebde8cbeb649ae7fd338180c0562ae0b.png)\n\nThe maximum distance is achieved when a train runs as follows:\n\n  * In the first 4.5 seconds, it accelerates at a rate of 1m/s^2, covering 10.125 meters.\n  * In the last 4.5 seconds, it decelerates at the acceleration of -1m/s^2, covering 10.125 meters.\n\nThe total distance covered is 10.125 \\+ 10.125 = 20.25 meters.\n\n* * *"}, {"input": "10\n    64 55 27 35 76 119 7 18 49 100\n    29 19 31 39 27 48 41 87 55 70", "output": "20291.000000000000"}]