Advertisement
a53

Actualizare Element, Minim Interval

a53
Dec 30th, 2019
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.98 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define nmax 100001
  3. using namespace std;
  4. ifstream f("aemi.in");
  5. ofstream g("aemi.out");
  6. int arb[4*nmax+55];
  7. int i,n,v,m,mi,x,y,t;
  8.  
  9. void update(int nod,int st,int dr,int poz,int val)
  10. {
  11. if(st==dr)
  12. {
  13. arb[nod]=val;
  14. return;
  15. }
  16. int mij=(st+dr)/2;
  17. if(poz<=mij)update(2*nod,st,mij,poz,val);
  18. else update(2*nod+1,mij+1,dr,poz,val);
  19. arb[nod]=min(arb[2*nod],arb[2*nod+1]);
  20. }
  21.  
  22. void query(int nod,int st,int dr,int a,int b)
  23. {
  24. if(a<=st&&dr<=b)
  25. {
  26. mi=min(mi,arb[nod]);
  27. return;
  28. }
  29. int mij=(st+dr)/2;
  30. if(a<=mij)query(2*nod,st,mij,a,b);
  31. if(mij<b)query(2*nod+1,mij+1,dr,a,b);
  32. }
  33.  
  34. int main()
  35. {
  36. f>>n;
  37. for(i=1;i<=n;++i)
  38. {
  39. f>>v;
  40. update(1,1,n,i,v);
  41. }
  42. f>>m;
  43. while(m--)
  44. {
  45. f>>t>>x>>y;
  46. if(t==1)
  47. mi=INT_MAX,query(1,1,n,x,y),g<<mi<<'\n';
  48. else
  49. update(1,1,n,x,y);
  50. }
  51. return 0;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement