#include <bits/stdc++.h>
class node {
 public:
  double lmax, rmax, mmax, sum;
  int l, r;
  int lch, rch;
  node() { lch = rch = -1; }
};
int punishment, stops, tourists;
int station[150000], per[300000], tot;
double possi[150000], profit[150000];
node st[600000];
inline double max(const double &a, const double &b) { return a > b ? a : b; }
void build(int l, int r, int pos) {
  st[pos].l = l;
  st[pos].r = r;
  if (l == r) {
    st[pos].sum = st[pos].lmax = st[pos].rmax = st[pos].mmax = profit[l];
  } else {
    st[pos].lch = ++tot;
    st[pos].rch = ++tot;
    build(l, (l + r) >> 1, st[pos].lch);
    build(((l + r) >> 1) + 1, r, st[pos].rch);
    int l = st[pos].lch, r = st[pos].rch;
    st[pos].lmax = max(st[l].lmax, st[l].sum + st[r].lmax);
    st[pos].rmax = max(st[r].rmax, st[r].sum + st[l].rmax);
    st[pos].sum = st[l].sum + st[r].sum;
    st[pos].mmax = max(max(st[l].mmax, st[r].mmax),
                       max(st[l].rmax + st[r].lmax, st[pos].sum));
  }
}
node query(int l, int r, int pos) {
  if (st[pos].l == l && st[pos].r == r)
    return st[pos];
  else {
    node a, b, c;
    int mid = (st[pos].l + st[pos].r) >> 1;
    if (r <= mid) return query(l, r, st[pos].lch);
    if (l > mid) return query(l, r, st[pos].rch);
    b = query(l, mid, st[pos].lch);
    c = query(mid + 1, r, st[pos].rch);
    a.lmax = max(b.lmax, b.sum + c.lmax);
    a.rmax = max(c.rmax, c.sum + b.rmax);
    a.sum = b.sum + c.sum;
    a.mmax = max(max(b.mmax, c.mmax), max(b.rmax + c.lmax, a.sum));
    return a;
  }
}
int main() {
  scanf("%d %d %d", &stops, &tourists, &punishment);
  for (int i = 0; i < stops; i++) scanf("%d", &station[i]);
  for (int i = 0; i < stops - 1; i++) scanf("%lf", &possi[i]);
  for (int i = 0; i < stops - 1; i++)
    profit[i] = (station[i + 1] - station[i]) * 50 - possi[i] * punishment;
  build(0, stops - 2, 0);
  double ans = 0;
  int a, b;
  node ANS;
  for (int i = 0; i < tourists; i++) {
    scanf("%d%d", &a, &b);
    ANS = query(a - 1, b - 2, 0);
    ans += max(max(ANS.lmax, max(ANS.rmax, ANS.mmax)), 0);
  }
  printf("%lf\n", ans / 100);
  return 0;
}
