Advertisement
Korotkodul

CF 27.08 C1

Aug 23rd, 2022 (edited)
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.16 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <vector>
  4. #include <queue>
  5. #include <algorithm>
  6. #include <string>
  7. #include <stack>
  8. #include <set>
  9. #include <map>
  10. #define pii pair <int,int>
  11. #define vec vector
  12. using namespace std;
  13. using ll = long long;
  14. using ld = long double;
  15. using db = double;
  16. void cv(vector <int> &v){
  17.     for (auto x: v) cout<<x<<' ';
  18.     cout<<"\n";
  19. }
  20.  
  21. void cvl(vector <ll> &v){
  22.     for (auto x: v) cout<<x<<' ';
  23.     cout<<"\n";
  24. }
  25.  
  26.  
  27. void cvv(vector <vector <int> > &v){
  28.     for (auto x: v) cv(x);
  29.     cout<<"\n";
  30. }
  31.  
  32. void cvb(vector <bool> v){
  33.     for (bool x: v) cout<<x<<' ';
  34.     cout<<"\n";
  35. }
  36.  
  37. void cvs(vector <string>  v){
  38.     for (auto a: v){
  39.         cout<<a<<"\n";
  40.     }
  41. }
  42.  
  43. void cvp(vector <pii> a){
  44.     for (auto p: a){
  45.         cout<<p.first<<' '<<p.second<<"\n";
  46.     }
  47.     cout<<"\n";
  48. }
  49.  
  50. int n;
  51. vector <int> a,b, dmin, dmax;
  52.  
  53.  
  54. bool sh=0;
  55.  
  56. void bsmin(int i){
  57.     int L = -1, R = n - 1, M;//R - ans
  58.     while (L + 1 < R){
  59.         M = (L + R) / 2;
  60.         if (b[M] >= a[i]){
  61.             R = M;
  62.         }
  63.         else{
  64.             L = M;
  65.         }
  66.     }
  67.     dmin[i] = b[R] - a[i];
  68. }
  69.  
  70. void bsmax(int i){
  71.     int L = i, R = n - 1, M; //L-ans
  72.     while (L + 1 < R){
  73.         M = (L + R) / 2;
  74.         if (b[M] >= a[M+1]){
  75.             L = M;
  76.         }
  77.         else{
  78.             R = M;
  79.         }
  80.     }
  81.     dmax[i] = b[L + 1] - a[i];
  82. }
  83.  
  84. void slv(){
  85.     for (int i = 0; i < n; ++i){
  86.         //dmin
  87.         if (i == 0){
  88.             dmin[i] = b[0] - a[0];
  89.         }
  90.         else{
  91.            bsmin(i);
  92.         }
  93.         //dmax
  94.         if (i == n - 1){
  95.             dmax[i] = b[n - 1] - a[n - 1];
  96.         }
  97.         else if (b[i] < a[i + 1]){
  98.             dmax[i] = b[i] - a[i];
  99.         }
  100.         else{
  101.            bsmax(i);
  102.         }
  103.     }
  104. }
  105.  
  106.  
  107. int main()
  108. {
  109.     ios::sync_with_stdio(0);
  110.     cin.tie(0);
  111.     cout.tie(0);
  112.     int t=1;
  113.     if (!sh) cin>>t;
  114.     for (int go = 0; go < t; ++go){
  115.         cin>>n;
  116.         a.resize(n); for (int &i: a) cin>>i;
  117.         b.resize(n); for (int &i: b) cin>>i;
  118.         dmin.resize(n);
  119.         dmax.resize(n);
  120.         slv();
  121.         cv(dmin);
  122.         cv(dmax);
  123.     }
  124. }
  125.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement