#include <bits/stdc++.h>
using namespace std;
const int N = 150005;
class nodo {
 public:
  long long sum, prefix, sufix, maxi;
  nodo() {}
  nodo(long long _sum, long long _prefix, long long _sufix, long long _maxi) {
    sum = _sum;
    prefix = _prefix;
    sufix = _sufix;
    maxi = _maxi;
  }
} tree[4 * N];
long long eval[N];
void build(int b, int e, int v) {
  if (b == e) {
    tree[v] = nodo(eval[b], eval[b], eval[b], eval[b]);
  } else {
    int mid = (b + e) >> 1, le = 2 * v + 1, ri = le + 1;
    build(b, mid, le);
    build(mid + 1, e, ri);
    tree[v].sum = tree[le].sum + tree[ri].sum;
    tree[v].maxi = max(tree[le].maxi, tree[ri].maxi);
    tree[v].maxi = max(tree[v].maxi, tree[le].sufix + tree[ri].prefix);
    tree[v].prefix = max(tree[le].prefix, tree[le].sum + tree[ri].prefix);
    tree[v].sufix = max(tree[ri].sufix, tree[le].sufix + tree[ri].sum);
  }
}
nodo query(int b, int e, int v, int i, int j) {
  if (i <= b && e <= j) {
    return tree[v];
  }
  int mid = (b + e) >> 1, le = 2 * v + 1, ri = le + 1;
  if (mid < i)
    return query(mid + 1, e, ri, i, j);
  else if (mid + 1 > j)
    return query(b, mid, le, i, j);
  else {
    nodo ret1 = query(b, mid, le, i, j);
    nodo ret2 = query(mid + 1, e, ri, i, j);
    nodo answer;
    answer.sum = ret1.sum + ret2.sum;
    answer.prefix = max(ret1.prefix, ret1.sum + ret2.prefix);
    answer.sufix = max(ret2.sufix, ret1.sufix + ret2.sum);
    answer.maxi = max(ret1.maxi, ret2.maxi);
    answer.maxi = max(answer.maxi, ret1.sufix + ret2.prefix);
    return answer;
  }
}
int p[N], x[N];
int main() {
  int c, m, n;
  cin >> n >> m >> c;
  for (int i = 0; i < n; ++i) scanf("%d", &x[i]);
  for (int i = 0; i < n - 1; ++i) scanf("%d", &p[i]);
  n--;
  for (int i = 0; i < n; ++i) {
    eval[i] = (long long)(x[i + 1] - x[i]) * 50 - (long long)c * p[i];
  }
  build(0, n - 1, 0);
  int a, b;
  long long answer = 0;
  for (int i = 0; i < m; ++i) {
    scanf("%d %d", &a, &b);
    a--;
    b -= 2;
    long long parcial = max(0LL, query(0, n - 1, 0, a, b).maxi);
    answer += parcial;
  }
  printf("%.10f\n", answer / 100.0);
  return 0;
}
