Advertisement
Guest User

Untitled

a guest
Jan 24th, 2018
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.13 KB | None | 0 0
  1. #include <cstdio>
  2. using namespace::std;
  3. const int N = 100005;
  4. int d[6][N], s[N], n, q;
  5. bool ok = false;
  6. int odp(int a, int b, int i) {
  7. int w1 = 0, w2 = 0;
  8. while(b != 0) {
  9. w1 += d[i][b];
  10. b -= b&-b;
  11. }
  12. a--;
  13. while(a != 0) {
  14. w2 += d[i][a];
  15. a -= a&-a;
  16. }
  17. return w1 - w2;
  18. }
  19. void wstaw(int x, int v, int i) {
  20. while (v <= n) {
  21. d[i][v] += x;
  22. v += v&-v;
  23.  
  24. }
  25. }
  26. int main() {
  27. scanf("%d%d", &n, &q);
  28. for (int i = 1; i <= n; i++)
  29. for (int j = 2; j <= 5; j++) wstaw(1, i, j);
  30. for (int i = 0; i < q; i++) {
  31. char str[10];
  32. scanf ("%6s", str);
  33. if(str[0] == 'W') {
  34. int p, c;
  35. scanf("%d%d", &p, &c);
  36. if (c == 3) ok = true;
  37. for (int j = 2; j <= 5; j++) {
  38. if((s[p] + c) % j != 0 && s[p] % j == 0) {
  39. wstaw(-1, p, j);
  40. //printf("huj: %d, %d %d\n", j, s[p] + c, s[p]);
  41. }
  42. if((s[p] + c) % j == 0 && s[p] % j != 0) {
  43. wstaw(1, p, j);
  44. //printf("huj: %d, %d %d\n", j, s[p] + c, s[p]);
  45. }
  46.  
  47. }
  48. s[p] += c;
  49. } else {
  50. int a, b, k;
  51. scanf("%d%d%d", &a, &b, &k);
  52. if (k == 1) printf("%d\n", b - a + 1);
  53. else printf("%d\n", odp(a, b, k));
  54. }
  55. }
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement