Linux tsuru-no-tsurugi 5.15.0-186-generic #196-Ubuntu SMP Sat Jun 20 16:09:34 UTC 2026 x86_64
Apache/2.4.52 (Ubuntu)
Server IP : 192.168.0.18 & Your IP : 216.73.217.105
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
var /
www /
submit2 /
114874 /
Delete
Unzip
Name
Size
Permission
Date
Action
a.cpp
1.23
KB
-rwxr-x---
2024-08-28 22:35
cerror.txt
0
B
-rwxr-x---
2024-08-28 22:35
error.txt
0
B
-rwxr-x---
2024-08-28 22:35
submit_info.txt
199
B
-rwxr-x---
2024-08-28 22:35
Save
Rename
#include <bits/stdc++.h> struct UnionFind { std::vector<int> e; UnionFind(int n) : e(n, -1) {} int find(int u) { return e[u] < 0 ? u : e[u] = find(e[u]); } void join(int u, int v) { u = find(u); v = find(v); if (u == v) return; if (e[u] > e[v]) std::swap(u, v); e[u] += e[v]; e[v] = u; return; } }; int main() { std::cin.tie(0)->sync_with_stdio(0); std::cin.exceptions(std::cin.failbit); int N, M, X, P; std::cin >> N >> M >> X >> P; std::vector<int> B(N+1), T(M+1); for (int i = 1; i <= N; ++i) std::cin >> B[i]; for (int i = 1; i <= M; ++i) std::cin >> T[i]; UnionFind uf(M+1); for (int u, v, i = 0; i < X; ++i) { std::cin >> u >> v; uf.join(u, v); } std::set<std::pair<int, int>> s; for (int i = 1; i <= M; ++i) s.emplace(T[i], uf.find(i)); std::vector<int> need(M+1); for (int i = 1; i <= N; ++i) { int lb = B[i] - P, rb = B[i] + P; auto it = s.lower_bound(std::make_pair(lb, -1)); while (it != s.end() and it->first <= rb) { need[it->second] = 1; it = s.erase(it); } } int ans = 0; for (int i = 1; i <= M; ++i) ans += need[i]; std::cout << ans << '\n'; return 0; }