Advertisement
Tbl_Mne_Ne_Dryg

Untitled

Dec 24th, 2022
1,060
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.11 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define int long long
  3.  
  4. using namespace std;
  5.  
  6. signed main() {
  7.   ios::sync_with_stdio(false);
  8.   cin.tie(0);
  9. #ifdef LOCAL
  10.   freopen("input", "r", stdin);
  11. #endif
  12.   int n, m, t, k;
  13.   cin >> n >> m >> t >> k;
  14.   vector<int> a(n + 1);
  15.   a[0] = -k;
  16.   vector<int> b(m + 1);
  17.   b[0] = -k;
  18.   for (int i = 1; i <= n; i++)
  19.     cin >> a[i];
  20.   for (int i = 1; i <= m; i++)
  21.     cin >> b[i];
  22.   a.push_back(t);
  23.   b.push_back(t);
  24.   sort(a.begin(), a.end());
  25.   sort(b.begin(), b.end());
  26.   int tt = 0;
  27.   int cntA = 0, cntB = 0;
  28.   int ch = 0;
  29.   while (tt < t) {
  30.     if (ch == 0) {
  31.       auto adL = --upper_bound(a.begin(), a.end(), tt);
  32.       tt = max(tt, *adL + k);
  33.       if (tt >= t)
  34.         break;
  35.       auto adR = *upper_bound(a.begin(), a.end(), tt);
  36.       cntA += adR - tt;
  37.       tt = adR;
  38.     } else {
  39.       auto adL = --upper_bound(b.begin(), b.end(), tt);
  40.       tt = max(tt, *adL + k);
  41.       if (tt >= t)
  42.         break;
  43.       auto adR = *upper_bound(b.begin(), b.end(), tt);
  44.       cntB += adR - tt;
  45.       tt = adR;
  46.     }
  47.     ch ^= 1;
  48.   }
  49.   cout << cntA << ' ' << cntB << '\n';
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement