Advertisement
Guest User

Untitled

a guest
Jun 21st, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.89 KB | None | 0 0
  1. #include <iostream>
  2. #include <ctime>
  3. #include <iomanip>
  4. #include <vector>
  5. #include <map>
  6. #include <algorithm>
  7. #include <string>
  8. #include <cmath>
  9. #include <set>
  10. #include <unordered_set>
  11. #include <stack>
  12. #include <cassert>
  13. #include <queue>
  14. #include <deque>
  15.  
  16. using namespace std;
  17.  
  18. typedef long long ll;
  19. typedef long double ld;
  20.  
  21.  
  22. //#define int long long
  23. const int inf=1e9+1329;
  24.  
  25. const int len=300;
  26.  
  27. int n;
  28. vector<pair<int, bool>> blocks; //bool-есть ли хотя бы одна группа в блоке
  29. vector<int> a;
  30.  
  31. void precalc(){
  32. while (n%len!=0) {
  33. n++;
  34. a.push_back(-1);
  35. }
  36. blocks.assign(n/len, {-1,0});
  37. }
  38.  
  39. int ind=1;
  40.  
  41. void change(int l,int r){
  42. bool fl=1;
  43. set<int> seen;
  44.  
  45. for(int i=l;i<r;){
  46. if(i%len==0 && i+len<r){
  47. int cur=i/len;
  48. if(blocks[cur].second==1){
  49. fl=0;
  50. }
  51. seen.insert(blocks[cur].first);
  52. i+=len;
  53. }
  54. else{
  55. seen.insert(a[i]);
  56. i++;
  57. }
  58. }
  59.  
  60. if(!fl || seen.size()>1){
  61. cout << 0 << "\n";
  62. return;
  63. }
  64. else{
  65. cout << 1 << "\n";
  66. }
  67. for(int i=l;i<r;){
  68. if(i%len==0 && i+len<r){
  69. int cur=i/len;
  70. //в блоке
  71. blocks[cur].first=ind;
  72. blocks[cur].second=0;//с блоком все ок
  73. i += len;
  74. }
  75. else{
  76. //вне блока
  77. int cur=i/len;
  78. blocks[cur].second = 1;//блок сломали
  79. a[i]=ind;
  80. i++;
  81. }
  82. }
  83. ind++;
  84. }
  85.  
  86. void clear(int l,int r){
  87. for(int i=l;i<r;){
  88. if(i%len==0 && i+len<r){
  89. int cur=i/len;
  90. blocks[cur].first = -1;
  91. blocks[cur].second = 0;
  92. i+=len;
  93. }
  94. else{
  95. a[i]=-1;
  96. i++;
  97. }
  98. }
  99. if(l%len!=0){
  100. //был заскок слева
  101. int cur=l/len;
  102. set<int> seen;
  103. for(int i=cur*len;i<cur*len+len;i++){
  104. seen.insert(a[i]);
  105. }
  106. if(seen.size()==1){
  107. blocks[cur].second = 0;
  108. blocks[cur].first = a[l];
  109. }
  110. }
  111. if((r-1)%len!=0){
  112. int cur=r/len;
  113. set<int> seen;
  114. for(int i=cur*len;i<cur*len+len;i++){
  115. seen.insert(a[i]);
  116. }
  117. if(seen.size()==1){
  118. blocks[cur].second = 0;
  119. blocks[cur].first = a[l];
  120. }
  121. }
  122. }
  123.  
  124. signed main() {
  125. ios_base::sync_with_stdio(false);
  126. cin.tie(0);
  127.  
  128. #ifndef ONLINE_JUDGE
  129. freopen("input.txt", "r", stdin);
  130. freopen("output.txt", "w", stdout);
  131. #endif
  132.  
  133.  
  134. cin >> n;
  135.  
  136. a.resize(n);
  137. for(auto &t:a){
  138. t=-1;
  139. }
  140.  
  141. int q;
  142. cin >> q;
  143. while (q--) {
  144. <#statements#>
  145. }
  146. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement