import core.bitop;
import std.algorithm;
import std.array;
import std.ascii;
import std.container;
import std.conv;
import std.format;
import std.math;
import std.range;
import std.stdio;
import std.string;
import std.typecons;

void main()
{
  int n = readln.chomp.to!int;
  enum int ofs = 10;
  int[] t = readln.chomp.split.map!(to!int).map!(a => a * ofs).array;
  int[] u = [0];
  foreach (a; t)
  {
    u ~= u.back + a;
  }
  t ~= 0;
  int[] v = readln.chomp.split.map!(to!int).map!(a => a * ofs).array;
  v ~= 0;
  int[] valid = new int[](u.back + 1);
  valid[] = int.max;
  foreach (i, a; u)
  {
    foreach (j; 0 .. t[i]) {
      valid[a + j] = min(valid[a + j], v[i]);
    }
    foreach (j; 0 .. a + 1)
    {
      valid[a - j] = min(valid[a - j], v[i] + j);
    }
  }
  // foreach (i, a; valid)
  // {
  //   stderr.writeln(i, " : ", a);
  // }
  int w = 0;
  long sum = 0;
  foreach (i, a; valid)
  {
    if (w < a)
    {
      sum += w * 2;
      ++w;
      ++sum;
    }
    else if (w > a)
    {
      --w;
      sum += w * 2;
      --sum;
    } else {
      sum += w * 2;
    }
    // stderr.writeln(i, " : ", w, " ... ", sum, " / ", sum / 2);
  }
  writefln("%.4f", cast(double)sum / (2.0 * ofs * ofs));
}
