Advertisement
Guest User

Untitled

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