Advertisement
bero_0401

segment tree

Jul 18th, 2024
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.51 KB | Source Code | 0 0
  1. #include "bits/stdc++.h"
  2. using namespace std;
  3. #define ll long long
  4.  
  5. const int N = 2e5+5;
  6. const int LOG = 18;
  7.  
  8.  
  9. int n,q;
  10. vector <ll> seg;
  11.  
  12. void build(vector <int> &a , int i = 0, int l = 0, int r = (n-1)){
  13.     if(l == r) seg[i] = a[l];
  14.     else{
  15.         int mid = (l+r)/2;
  16.         build(a,i*2+1, l, mid);
  17.         build(a,i*2+2, mid+1, r);
  18.         seg[i] = min(seg[i*2+1],seg[i*2+2]);
  19.     }
  20. }
  21. void update(int id, int val, int l = 0, int r = n-1, int i = 0 ){
  22.     if(id>r or id<l) return;
  23.     if(l == r) {
  24.         if(l == id) seg[i] = val;
  25.         return;
  26.     }
  27.     int mid = (l+r)/2;
  28.     update(id, val, l, mid, i*2+1);
  29.     update(id, val, mid+1, r, i*2+2);
  30.     seg[i] = min(seg[i*2+1],seg[i*2+2]);
  31. }
  32. int getmin(int L, int R, int l = 0, int r = n-1, int i = 0){
  33.     if (l>=L and r<=R) return seg[i];
  34.     if (l>R or r<L) return 1e9;
  35.     int mid = (l+r)/2;
  36.     return min(getmin(L,R,l,mid, i*2+1) , getmin(L,R,mid+1,r, i*2+2));
  37. }
  38. void solve() {
  39.     cin>>n>>q;
  40.     vector <int> a(n);
  41.  
  42.     for(int i =0; i<n;i++)
  43.         cin>>a[i];
  44.     seg.resize(4*n,0);
  45.     build(a);
  46.     while(q--){
  47.         int type; cin>>type;
  48.         if(type == 1){
  49.             int id,val; cin>>id>>val;
  50.             update(id-1,val);
  51.         }
  52.         else {
  53.             int l,r; cin>>l>>r;
  54.             cout<<getmin(l-1,r-1)<<"\n";
  55.         }
  56.     }
  57. }
  58.  
  59.  
  60. int main()
  61. {
  62.     ios::sync_with_stdio(0);cin.tie(0);    cout.tie(0);
  63.     int tc = 1;
  64.  
  65.     //cin>>tc;
  66.  
  67.     while(tc--)
  68.     {
  69.         solve();
  70.     }
  71.  
  72. }
  73.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement