fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. using ll = long long;
  4.  
  5. int n, m, k, ans;
  6.  
  7. int main() {
  8. scanf("%d%d%d", &n, &m, &k);
  9.  
  10. unordered_multiset<ll> used;
  11. vector<ll> a(n), sz(m);
  12. for(int i = 0; i < n; i++)
  13. scanf("%lld", &a[i]);
  14.  
  15. for(int i = 0; i < m; i++)
  16. scanf("%lld", &sz[i]);
  17.  
  18. sort(begin(sz), end(sz));
  19. sort(begin(a), end(a));
  20.  
  21. for(int i = 0; i < n; i++) {
  22. auto x = lower_bound(begin(sz), end(sz), a[i] - k);
  23. if(x != sz.end()) {
  24. if(*x <= a[i] + k && used.find(x - sz.begin()) == used.end()) {
  25. ans++;
  26. used.insert(x - sz.begin());
  27. } else {
  28. for(int idx = x - sz.begin(); idx < n && sz[idx] <= a[i] + k; idx++) {
  29. if(used.find(idx) == used.end()) {
  30. ans++;
  31. used.insert(idx);
  32. break;
  33. }
  34. }
  35. }
  36. }
  37. }
  38. printf("%d\n", ans);
  39. return 0;
  40. }
Success #stdin #stdout 0s 4352KB
stdin
4 3 5
60 45 80 60
30 60 75
stdout
2