fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. set<int> p;
  5. set<int> k;
  6. set<int> p2;
  7. set<int> p3;
  8. set<int> k3;
  9. set<int> p23;
  10. multiset<int> wiel;
  11.  
  12. int main()
  13. {
  14. ios_base::sync_with_stdio(0);
  15. int n,m,a,b,wi = 0,wi2 = 0,x,y;
  16. string slo;
  17. bool czyp,czyk;
  18. cin >> n >> slo >> m;
  19. for(int i = 0;i < n;++i)
  20. {
  21. if(slo[i] == '_')
  22. {
  23. if(wi == 0)
  24. {
  25. p.insert(i);
  26. p2.insert(-i);
  27. }
  28. wi++;
  29. }
  30. if(slo[i] == '.')
  31. {
  32. if(wi2 == 0)
  33. {
  34. p3.insert(i);
  35. p23.insert(-i);
  36. }
  37. wi2++;
  38. }
  39. if(slo[i] == '.' && wi > 0)
  40. {
  41. wi = 0;
  42. k.insert(i-1);
  43. }
  44. if(slo[i] == '_' && wi2 > 0)
  45. {
  46. wiel.insert(wi2);
  47. wi2 = 0;
  48. k3.insert(i-1);
  49. }
  50. }
  51. if(wi > 0)
  52. {
  53. k.insert(n-1);
  54. wi = 0;
  55. }
  56. if(wi2 > 0)
  57. {
  58. wiel.insert(wi2);
  59. k3.insert(n-1);
  60. wi2 = 0;
  61. }
  62. if(n == 1)
  63. {
  64. for(int i = 0;i < m;++i)
  65. {
  66. cin >> a >> b;
  67. if(a == 1)
  68. {
  69. cout << "M0ST JEST CALY" << endl;
  70. }
  71. else
  72. {
  73. cout << 2 << endl;
  74. }
  75. }
  76. return 0;
  77. }
  78. /*for(int i : p)
  79. {
  80. cout << i << ' ';
  81. }
  82. cout << endl;
  83. for(int i : k)
  84. {
  85. cout << i << ' ';
  86. }
  87. cout << endl;
  88. for(int i : p3)
  89. {
  90. cout << i << ' ';
  91. }
  92. cout << endl;
  93. for(int i : k3)
  94. {
  95. cout << i << ' ';
  96. }
  97. cout << endl;*/
  98. for(int i = 0;i < m;++i)
  99. {
  100. cin >> a >> b;
  101. czyp = 0;
  102. czyk = 0;
  103. b--;
  104. if(a == 2)
  105. {
  106. if(p.find(b) != p.end())
  107. {
  108. czyp = 1;
  109. }
  110. if(k.find(b) != k.end())
  111. {
  112. czyk = 1;
  113. }
  114. cout << czyp << ' ' << czyk << endl;
  115. if(czyp && czyk)
  116. {
  117. if(b > 0 && b < n-1)
  118. {
  119. x = -(*p23.lower_bound(-b));
  120. y = *k3.lower_bound(x);
  121. cout << "-_-" << x << ' ' << y << endl;
  122. wi = y-x+1;
  123. x = b+1;
  124. y = *k3.lower_bound(x);
  125. wi2 = y-x+1;
  126. cout << "-_-" << x << ' ' << y << endl;
  127. wiel.insert(wi+wi2+1);
  128. wiel.erase(wiel.find(wi));
  129. wiel.erase(wiel.find(wi2));
  130. p.erase(b);
  131. p2.erase(-b);
  132. k.erase(b);
  133. k3.erase(b-1);
  134. p3.erase(b+1);
  135. p23.erase(-(b+1));
  136. }
  137. if(b == 0)
  138. {
  139. x = b+1;
  140. y = *k3.lower_bound(x);
  141. wi2 = y-x+1;
  142. cout << "-_-" << x << ' ' << y << endl;
  143. wiel.insert(wi2+1);
  144. wiel.erase(wiel.find(wi2));
  145. p.erase(b);
  146. p2.erase(-b);
  147. k.erase(b);
  148. p3.erase(1);
  149. p23.erase(-1);
  150. p3.insert(0);
  151. p23.insert(0);
  152. }
  153. if(b == n-1)
  154. {
  155. x = -(*p23.lower_bound(-b));
  156. y = *k3.lower_bound(x);
  157. cout << "-_-" << x << ' ' << y << endl;
  158. wi = y-x+1;
  159. wiel.insert(wi+1);
  160. wiel.erase(wiel.find(wi));
  161. p.erase(b);
  162. p2.erase(-b);
  163. k.erase(b);
  164. k3.erase(b-1);
  165. k3.insert(b);
  166. }
  167.  
  168. }
  169. else if(czyp)
  170. {
  171. if(b > 0)
  172. {
  173. x = -(*p23.lower_bound(-b));
  174. y = b-1;
  175. wiel.erase(wiel.find(y-x+1));
  176. wiel.insert(y-x+2);
  177. k3.erase(b-1);
  178. k3.insert(b);
  179. p.erase(b);
  180. p.insert(b+1);
  181. p2.erase(-b);
  182. p2.insert(-(b+1));
  183. }
  184. else
  185. {
  186. wiel.insert(1);
  187. p3.insert(0);
  188. p23.insert(0);
  189. k3.insert(0);
  190. p.insert(1);
  191. p2.insert(-1);
  192. p.erase(0);
  193. p2.erase(0);
  194. }
  195. }
  196. else if(czyk)
  197. {
  198. if(b < n-1)
  199. {
  200. x = b+1;
  201. y = *k3.lower_bound(b+1);
  202. wiel.erase(wiel.find(y-x+1));
  203. wiel.insert(y-x+2);
  204. k.erase(b);
  205. k.insert(b-1);
  206. p3.erase(b+1);
  207. p3.insert(b);
  208. p23.erase(-(b+1));
  209. p23.insert(-b);
  210. }
  211. else
  212. {
  213. wiel.insert(1);
  214. p3.insert(n-1);
  215. p23.insert(-(n-1));
  216. k3.insert(n-1);
  217. k.erase(b);
  218. k.insert(b-1);
  219. }
  220. }
  221. else
  222. {
  223. wiel.insert(1);
  224. k.insert(b-1);
  225. p.insert(b+1);
  226. p2.insert(-(b+1));
  227. p3.insert(b);
  228. p23.insert(-b);
  229. k3.insert(b);
  230. }
  231. /*for(int i : p)
  232. {
  233. cout << i << ' ';
  234. }
  235. cout << endl;
  236. for(int i : k)
  237. {
  238. cout << i << ' ';
  239. }
  240. cout << endl;
  241. for(int i : p3)
  242. {
  243. cout << i << ' ';
  244. }
  245. cout << endl;
  246. for(int i : k3)
  247. {
  248. cout << i << ' ';
  249. }
  250. cout << endl;*/
  251. if(wiel.size() == 0)
  252. {
  253. cout << "M0ST JEST CALY" << endl;
  254. }
  255. else
  256. cout << *wiel.rbegin()+1 << endl;
  257. }
  258. }
  259.  
  260. }
  261.  
Success #stdin #stdout 0.01s 5288KB
stdin
6
___.__
2
2 2
2 3
stdout
0 0
2
1 1
-_-1 1
-_-3 3
4