Advertisement
Guest User

Untitled

a guest
Jan 16th, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.14 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3.  
  4. using namespace std;
  5.  
  6.  
  7. int main()
  8. {
  9. long long n, m, t, k, ac = 0, bc = -1, ares = 0, bres = 0, tl;
  10. cin >> n >> m >> t >> k;
  11. vector <long long> a(n + 1);
  12. vector <long long> b(m + 1);
  13. for(long long i = 1; i < n + 1; i++){
  14. cin >> a[i];
  15. }
  16. for(long long i = 1; i < m + 1; i++){
  17. cin >> b[i];
  18. }
  19. bool flag = false;
  20. tl=a[1];
  21. ares+=a[1];
  22. while(true){
  23. if(flag == true){
  24. while(ac <= n){
  25. ac++;
  26. if(a[ac + 1] > b[bc + 1]){
  27. break;
  28. }
  29. }
  30. if(ac == n){
  31. if(t - a[ac] - k > 0){
  32. ares+=t - a[ac] - k;
  33. }
  34. break;
  35. }
  36. else{
  37. if(tl+min(a[ac + 1] - b[bc + 1], a[ac + 1] - a[ac]) > t){
  38. if(t - a[ac] + k > 0){
  39. ares+=t-a[ac] + k;
  40. }
  41. break;
  42. }
  43. else{
  44. if(a[ac + 1] - a[ac] - k > 0){
  45. ares+=a[ac + 1] - a[ac + 1] - k;
  46. }
  47. tl+=min(a[ac + 1] - b[bc + 1] - k, a[ac + 1] - a[ac] - k);
  48. }
  49. }
  50. flag=true;
  51. }
  52. else{
  53. while(bc <= m){
  54. bc++;
  55. if(b[bc + 1] > a[ac + 1]){
  56. break;
  57. }
  58. }
  59. if(bc - 1 == m){
  60. if(t - b[bc - 1] - k > 0){
  61. bres+=t - b[bc - 1] - k;
  62. }
  63. break;
  64. }
  65. else{
  66. if(tl+min(b[bc + 1] - a[ac + 1], b[bc + 1] - b[bc]) > t){
  67. if(t - b[bc] + k > 0){
  68. bres+=t-b[bc] + k;
  69. }
  70. break;
  71. }
  72. else{
  73. if(b[bc + 1] - b[bc] - k > 0){
  74. bres+=b[bc + 1] - b[bc + 1] - k;
  75. }
  76. tl+=min(b[bc + 1] - a[ac + 1] - k, b[bc + 1] - b[bc] - k);
  77. }
  78. }
  79. flag=true;
  80. }
  81. }
  82. cout << ares << " " << bres;
  83. return 0;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement