#include <bits/stdc++.h>
using namespace std;
void sc(char& c) {
  char temp[4];
  scanf("%s", temp);
  c = temp[0];
}
struct debugger {
  template <typename T>
  debugger& operator,(const T& v) {
    cerr << v << " ";
    return *this;
  }
} dbg;
int testnum;
const int BASE = 1 << 18;
int n, m, c;
double arr[BASE];
double d[BASE];
struct data {
  double sum;
  double best;
  double bestbeg;
  double bestend;
  data(double _sum = 0, double _best = 0, double _bestbeg = 0,
       double _bestend = 0) {
    sum = _sum;
    best = _best;
    bestbeg = _bestbeg;
    bestend = _bestend;
  }
};
data operator+(data a, data b) {
  data ans;
  ans.sum = a.sum + b.sum;
  ans.best = max(a.bestend + b.bestbeg, max(a.best, b.best));
  ans.bestbeg = max(a.bestbeg, a.sum + b.bestbeg);
  ans.bestend = max(b.bestend, a.bestend + b.sum);
  return ans;
}
data stree[BASE + BASE];
void preprocess() {}
void build() {
  for (int i = 0; i < BASE; i++) {
    double z = max(0.0, arr[i]);
    stree[i + BASE] = data(arr[i], z, z, z);
  }
  for (int i = BASE - 1; i > 0; i--) {
    stree[i] = stree[i + i] + stree[i + i + 1];
  }
}
int lo, hi;
data query(int ind, int beg, int end) {
  if (beg > hi || end < lo) return data(0, 0, 0, 0);
  if (lo <= beg && end <= hi) return stree[ind];
  int twice = ind + ind;
  int mid = (beg + end) >> 1;
  return query(twice, beg, mid) + query(twice + 1, mid + 1, end);
}
void solve() {
  double ans = 0;
  for (int i = 0; i < m; i++) {
    int a, b;
    scanf("%d", &a);
    scanf("%d", &b);
    lo = a;
    hi = b - 1;
    data res = query(1, 0, BASE - 1);
    double cur = res.best;
    ans += cur;
  }
  printf("%.12lf\n", ans);
}
bool input() {
  scanf("%d", &n);
  scanf("%d", &m);
  scanf("%d", &c);
  int cur;
  scanf("%d", &cur);
  for (int i = 1; i < n; i++) {
    int z;
    scanf("%d", &z);
    d[i] = z - cur;
    cur = z;
  }
  memset(arr, 0, sizeof arr);
  for (int i = 1; i < n; i++) {
    double p;
    scanf("%lf", &p);
    p /= 100.0;
    arr[i] = p * (-c) + d[i] / 2.0;
  }
  build();
  return true;
}
int main() {
  preprocess();
  int T = 1;
  for (testnum = 1; testnum <= T; testnum++) {
    if (!input()) break;
    solve();
  }
}
