Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int main()
- {
- long long n, m, t, k, ac = 0, bc = -1, ares = 0, bres = 0, tl;
- cin >> n >> m >> t >> k;
- vector <long long> a(n + 1);
- vector <long long> b(m + 1);
- for(long long i = 1; i < n + 1; i++){
- cin >> a[i];
- }
- for(long long i = 1; i < m + 1; i++){
- cin >> b[i];
- }
- bool flag = false;
- tl=a[1];
- ares+=a[1];
- while(true){
- if(flag == true){
- while(ac <= n){
- ac++;
- if(a[ac + 1] > b[bc + 1]){
- break;
- }
- }
- if(ac == n){
- if(t - a[ac] - k > 0){
- ares+=t - a[ac] - k;
- }
- break;
- }
- else{
- if(tl+min(a[ac + 1] - b[bc + 1], a[ac + 1] - a[ac]) > t){
- if(t - a[ac] + k > 0){
- ares+=t-a[ac] + k;
- }
- break;
- }
- else{
- if(a[ac + 1] - a[ac] - k > 0){
- ares+=a[ac + 1] - a[ac + 1] - k;
- }
- tl+=min(a[ac + 1] - b[bc + 1] - k, a[ac + 1] - a[ac] - k);
- }
- }
- flag=true;
- }
- else{
- while(bc <= m){
- bc++;
- if(b[bc + 1] > a[ac + 1]){
- break;
- }
- }
- if(bc - 1 == m){
- if(t - b[bc - 1] - k > 0){
- bres+=t - b[bc - 1] - k;
- }
- break;
- }
- else{
- if(tl+min(b[bc + 1] - a[ac + 1], b[bc + 1] - b[bc]) > t){
- if(t - b[bc] + k > 0){
- bres+=t-b[bc] + k;
- }
- break;
- }
- else{
- if(b[bc + 1] - b[bc] - k > 0){
- bres+=b[bc + 1] - b[bc + 1] - k;
- }
- tl+=min(b[bc + 1] - a[ac + 1] - k, b[bc + 1] - b[bc] - k);
- }
- }
- flag=true;
- }
- }
- cout << ares << " " << bres;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement