orazma

m.cpp

Apr 9th, 2026
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.16 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define s second
  3. #define f first
  4. #define lb lower_bound
  5. #define pb push_back
  6. #define endl "\n"
  7. #define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
  8. using namespace std;
  9. const int mod1 = 1e9 + 7;
  10. const int mod2 = 676767677;
  11. const int MAXN = 1e6 + 5;
  12. const int INF = 1e9 + 7;
  13.  
  14. int t[4 * MAXN], a[MAXN], b[MAXN];
  15.  
  16. void push(int v, int tl, int tr){
  17.     if (t[v] != 0){
  18.         int tm = (tl + tr) >> 1;
  19.         t[v << 1] = t[v];
  20.         t[(v << 1) | 1] = t[v] + (tm - tl + 1);
  21.         t[v] = 0;
  22.     }
  23. }
  24.  
  25. void update(int v, int tl, int tr, int l, int r, int val){
  26.     if (l > r){
  27.         return;
  28.     }
  29.     if (tl == l && tr == r){
  30.         t[v] = val;
  31.         return;
  32.     }
  33.     int tm = (tl + tr) >> 1;
  34.     push(v, tl, tr);
  35.     update(v << 1, tl, tm, l, min(r, tm), val);
  36.     update((v << 1) | 1, tm + 1, tr, max(l, tm + 1), r, val + max(0, (min(r, tm) - l + 1)));
  37. }
  38.  
  39. int get_pos(int v, int tl, int tr, int pos){
  40.     if (tl > tr){
  41.         return 0;
  42.     }
  43.     if (tl == tr){
  44.         return t[v];
  45.     }
  46.  
  47.     int tm = (tl + tr) >> 1;
  48.     push(v, tl, tr);
  49.     if (pos <= tm){
  50.         return get_pos(v << 1, tl, tm, pos);
  51.     }
  52.     else{
  53.         return get_pos((v << 1) | 1, tm + 1, tr, pos);
  54.     }
  55.  
  56. }
  57.  
  58. void solve_problem() {
  59.  
  60.     int n, q;
  61.     cin >> n >> q;
  62.  
  63.     for (int i = 1; i <= n; i++){
  64.         cin >> a[i];
  65.     }
  66.  
  67.     for (int i = 1; i <= n; i++){
  68.         cin >> b[i];
  69.     }
  70.  
  71.     for (int i = 1; i <= q; i++){
  72.         int type;
  73.         cin >> type;
  74.         if (type == 1){
  75.             int x, y, k;
  76.             cin >> x >> y >> k;
  77.             update(1, 1, n, y, y + k - 1, x);
  78.  
  79.         }
  80.         else{
  81.             int pos;
  82.             cin >> pos;
  83.             int val = get_pos(1, 1, n, pos);
  84.             if (val == 0){
  85.                 cout << b[pos] << "\n";
  86.             }
  87.             else{
  88.                 cout << a[val] << '\n';
  89.             }
  90.  
  91.         }
  92.     }
  93.  
  94.     return;
  95. }
  96.  
  97. signed main () {
  98.     IOS
  99.  
  100.     //freopen("sum.in", "r", stdin);
  101.     //freopen("sum.out", "w", stdout);
  102.  
  103.     int tt = 1;
  104.     //cin >> tt;
  105.  
  106.     while (tt--) {
  107.       solve_problem();
  108.     }
  109. }
  110.  
Advertisement
Add Comment
Please, Sign In to add comment