Advertisement
nicuvlad76

Untitled

Dec 17th, 2022
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.12 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <algorithm>
  4. #include <vector>
  5. #define N 100005
  6. #define oo 2000000000
  7. using namespace std;
  8. ifstream fin("aemi.in");
  9. ofstream fout("aemi.out");
  10. int aint[4*N], n,m, Q;
  11. void Update(int p, int x)
  12. {
  13. int tata;
  14. aint[p]=x;
  15. while(p>=1)
  16. {
  17. tata=p/2;
  18. aint[tata]=min(aint[2*tata], aint[2*tata+1]);
  19. p=tata;
  20. }
  21. }
  22.  
  23. int Query(int k,int st, int dr, int x, int y)
  24. {
  25. if(st==x && dr==y) return aint[k];
  26. int mij=(st+dr)/2;
  27. if(mij<x) return Query(2*k+1, mij+1, dr, x,y);
  28. else if(mij>=y)
  29. return Query(2*k,st, mij, x, y);
  30. else
  31. return min(Query(2*k,st, mij, x, mij),Query(2*k+1, mij+1, dr, mij+1,y) );
  32.  
  33. }
  34.  
  35. int main()
  36. {
  37.  
  38. int k, p,i, op, x, y;
  39. fin>>k;
  40. n=(1<<(k-1));///2^(k-1)
  41. p=n;
  42. for(i=1;i<=k;i++)
  43. {
  44. fin>>x;
  45. aint[p++]=x;
  46. }
  47. for( ; p<=2*n-1;p++)
  48. aint[p]=oo;
  49. for(i=n-1;i>=1;i--)
  50. aint[i]=min(aint[2*i], aint[2*i+1]);
  51.  
  52. fin>>Q;
  53. while(Q--)
  54. {
  55. fin>>op>>x>>y;
  56. if(op==2)Update(n-1+x,y);
  57. else fout<<Query(1,1,n,x,y)<<"\n";
  58. }
  59. return 0;
  60. }
  61.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement