#include #include #include #include template std::map compress(std::vector& v) { std::sort(v.begin(), v.end()); v.erase(std::unique(v.begin(), v.end()), v.end()); std::map rev; for (int i = 0; i < (int)v.size(); ++i) rev[v[i]] = i; return rev; } using lint = long long; constexpr lint INF = 1LL << 60; void solve() { int n, m; lint k; char op; std::cin >> n >> m >> k >> op; std::vector xs(m); for (auto& x : xs) std::cin >> x; auto nxs = xs; nxs.push_back(-INF); auto revx = compress(nxs); std::vector cnt(revx.size() + 1, 0); for (auto x : xs) ++cnt[revx[x]]; for (int i = 1; i <= (int)revx.size(); ++i) cnt[i] += cnt[i - 1]; lint ans = 0; while (n--) { lint y; std::cin >> y; lint lx; if (op == '+') { lx = k - y; } else { lx = (k + y - 1) / y; } int i = std::lower_bound(nxs.begin(), nxs.end(), lx) - nxs.begin(); ans += m - cnt[i - 1]; } std::cout << ans << std::endl; } int main() { std::cin.tie(nullptr); std::ios::sync_with_stdio(false); solve(); return 0; }