fork download
  1. #include <iostream>
  2. #include <set>
  3. using namespace std;
  4.  
  5. int main() {
  6. set<int> myset1;
  7. set<int> myset2;
  8. set<int> myset3;
  9. set<int>::iterator it;
  10.  
  11. bool bol;
  12. long long a[100010];
  13. long long d;
  14. int f;
  15. int n,i,m,l,r,p;
  16. int z;
  17. cin>>n;
  18. for(i=1;i<=n;i++)
  19. {
  20. cin>>a[i];
  21. if(a[i]%2==0)
  22. {
  23. myset1.insert(i);
  24. }
  25. if(a[i]%3==0)
  26. {
  27. myset2.insert(i);
  28. }
  29. if(a[i]%5==0)
  30. {
  31. myset3.insert(i);
  32. }
  33.  
  34. }
  35.  
  36.  
  37. cin>>m;
  38. for(i=0;i<m;i++)
  39. {
  40. cin>>f;
  41. if(f==1)
  42. {
  43. cin>>l;
  44. cin>>r;
  45. cin>>p;
  46.  
  47.  
  48. if(p==2)
  49. {
  50. bol =false;
  51. for(z=l;z<=r;z++)
  52. {
  53. if(myset1.find(z) != myset1.end())
  54. {
  55. bol=true;
  56. it=myset1.find(z);
  57. for(it;it!=myset1.end();it++)
  58. {
  59. if(*it>r)
  60. break;
  61.  
  62. a[*it]/=p;
  63. if(a[*it]%p !=0)
  64. myset1.erase (it);
  65.  
  66. }
  67. }
  68. if(bol)
  69. break;
  70. }
  71. }
  72.  
  73.  
  74. if(p==3)
  75. {
  76. bol =false;
  77. for(z=l;z<=r;z++)
  78. {
  79. if(myset2.find(z) != myset2.end())
  80. {
  81. bol=true;
  82. it=myset2.find(z);
  83. for(it;it!=myset2.end();it++)
  84. {
  85. if(*it>r)
  86. break;
  87.  
  88. a[*it]/=p;
  89. if(a[*it]%p !=0)
  90. myset2.erase (it);
  91.  
  92. }
  93. }
  94. if(bol)
  95. break;
  96. }
  97. }
  98.  
  99.  
  100. if(p==5)
  101. {
  102. bol =false;
  103. for(z=l;z<=r;z++)
  104. {
  105. if(myset3.find(z) != myset3.end())
  106. {
  107. bol=true;
  108. it=myset3.find(z);
  109. for(it;it!=myset3.end();it++)
  110. {
  111. if(*it>r)
  112. break;
  113.  
  114. a[*it]/=p;
  115. if(a[*it]%p !=0)
  116. myset3.erase (it);
  117.  
  118. }
  119. }
  120. if(bol)
  121. break;
  122. }
  123. }
  124.  
  125. }
  126. else
  127. {
  128. cin>>l;
  129. cin>>d;
  130. a[l]=d;
  131. if(d%2==0)
  132. {
  133. myset1.insert(l);
  134. }
  135. else
  136. myset1.erase(l);
  137.  
  138. if(d%3==0)
  139. {
  140. myset2.insert(l);
  141. }
  142. else
  143. myset2.erase(l);
  144.  
  145.  
  146. if(d%5==0)
  147. {
  148. myset3.insert(l);
  149. }
  150. else
  151. myset3.erase(l);
  152. }
  153.  
  154. }
  155. for(i=1;i<=n;i++)
  156. {
  157. cout<<a[i]<<" ";
  158. }
  159. return 0;
  160. }
Success #stdin #stdout 0s 3532KB
stdin
6
1 2 3 6 15 18 
5
1 3 5 3
2 5 10
1 1 5 2
2 4 21
1 2 6 5
stdout
1 1 1 21 1 18