Advertisement
nicuvlad76

Untitled

Dec 17th, 2022
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.50 KB | None | 0 0
  1. #include <cstdio>
  2. #define N 100000
  3. #define M 1000001
  4. #define oo 2000000000
  5. using namespace std;
  6.  
  7. int aint[4*N], n, Q, a[N],s;
  8.  
  9. void Update(int nod, int st, int dr, int poz, int val)
  10. {
  11. if(st==dr){aint[nod]=val; return;}
  12. int mij=(st+dr)/2;
  13. if(poz<=mij)Update(2*nod, st, mij, poz, val);
  14. else Update(2*nod+1, mij+1, dr, poz, val);
  15. aint[nod]=aint[2*nod]+aint[2*nod+1];
  16. }
  17. void Query(int nod, int st, int dr, int x, int y)
  18. {
  19. if(x<=st && y>=dr){s+=aint[nod];return;}
  20. int mij=(st+dr)/2;
  21. if(x<=mij)Query(2*nod, st, mij, x,y);
  22. if(y>mij)Query(2*nod+1, mij+1, dr, x,y);
  23. }
  24. char S[M];
  25. int u=M-1;
  26. void Next()
  27. {
  28. if(++u==M)
  29. fread(S,1,M,stdin), u=0;
  30. }
  31. void Cit(int &x)
  32. {
  33. for(; S[u]<'0' || S[u]>'9'; Next());
  34. for(x=0; S[u]>='0' && S[u]<='9'; Next())
  35. x=x*10+S[u]-'0';
  36. }
  37. int main()
  38. {
  39. freopen("bogdan.in","r", stdin);
  40. freopen("bogdan.out","w", stdout);
  41. Cit(n);
  42. for(int i=1;i<=n;i++)
  43. {
  44. Cit(a[i]);
  45. if(a[i]<a[i-1])Update(1,1,n,i,1);
  46. else Update(1,1,n,i,0);
  47. }
  48. Cit(Q);
  49. int tip, x,y;
  50. while(Q--)
  51. {
  52. Cit(tip); Cit(x); Cit(y);
  53. if(tip==1)
  54. {
  55. a[x]=y;
  56. if(a[x]<a[x-1])Update(1,1,n,x,1);
  57. else Update(1,1,n,x,0);
  58. if(a[x+1]<a[x])Update(1,1,n,x+1,1);
  59. else Update(1,1,n,x+1,0);
  60. }
  61. else
  62. {
  63. s=0;
  64. Query(1,1,n,x+1,y);
  65. if(s==0)printf("DA\n");
  66. else printf("NU\n");
  67. }
  68.  
  69. }
  70. return 0;
  71. }
  72.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement