Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- using namespace::std;
- const int N = 500005;
- int d[6][N], s[N], n, q;
- void wstaw(int x, int v, int i) {
- while (v <= n) {
- d[i][v] += x;
- v += v&-v;
- }
- }
- int odp(int a, int b, int i) {
- int w1 = 0, w2 = 0;
- while(b != 0) {
- w1 += d[i][b];
- b -= b&-b;
- }
- a--;
- while(a != 0) {
- w2 += d[i][a];
- a -= a&-a;
- }
- return w1 - w2;
- }
- int main() {
- scanf("%d%d", &n, &q);
- for (int i = 1; i <= n; i++)
- for (int j = 2; j <= 5; j++) wstaw(1, i, j);
- for (int i = 0; i < q; i++) {
- char str[10];
- scanf ("%6s", str);
- if(str[0] == 'W') {
- int p, c;
- scanf("%d%d", &p, &c);
- s[p] += c;
- for (int j = 2; j <= 5; j++) {
- if(s[p] % j != 0) wstaw(-1, p, j);
- }
- } else {
- int a, b, k;
- scanf("%d%d%d", &a, &b, &k);
- if (k == 1) printf("%d\n", b - a + 1);
- else printf("%d\n", odp(a, b, k));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement