func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, k, x, y;   struct node {     int L, R, e;     long long int Lsum, Rsum, Ls, Rs;     int mid() { return (L + R) / 2; }   } a[200005 * 4];   void BuildTree(int r, int L, int R) {     a[r].L = L;     a[r].R = R;     a[r].e = 0;     a[r].Lsum = 0;     a[r].Rsum = 0;     a[r].Ls = 0;     a[r].Rs = 0;     if (L == R) return;     BuildTree(r << 1 | 1, L, a[r].mid());     BuildTree(r << 1, a[r].mid() + 1, R);     a[r].Lsum = a[r << 1 | 1].Lsum + a[r << 1].Lsum;     a[r].Rsum = a[r << 1 | 1].Rsum + a[r << 1].Rsum;     a[r].Ls = a[r << 1 | 1].Ls + a[r << 1].Ls;     a[r].Rs = a[r << 1 | 1].Rs + a[r << 1].Rs;   }   void Update(int r, int L, int v) {     if (a[r].L == a[r].R && a[r].L == L) {       int kk = a[r].e;       a[r].e += v;       if (a[r].e >= y && kk < y) {         a[r].Lsum++;         a[r].Ls -= kk;       }       if (a[r].e >= x && kk < x) {         a[r].Rs -= kk;         a[r].Rsum++;       }       if (a[r].e < y) a[r].Ls = a[r].e;       if (a[r].e < x) a[r].Rs = a[r].e;       return;     }     if (L > a[r].mid())       Update(r << 1, L, v);     else       Update(r << 1 | 1, L, v);     a[r].Lsum = a[r << 1 | 1].Lsum + a[r << 1].Lsum;     a[r].Rsum = a[r << 1 | 1].Rsum + a[r << 1].Rsum;     a[r].Ls = a[r << 1 | 1].Ls + a[r << 1].Ls;     a[r].Rs = a[r << 1 | 1].Rs + a[r << 1].Rs;   }   long long int Qurry(int r, int L, int R, int b) {     if (L > R) return 0;     if (a[r].L == L && a[r].R == R) {       if (b == 1)         return a[r].Lsum * y + a[r].Ls;       else if (b == 2)         return a[r].Rsum * x + a[r].Rs;     }     if (L > a[r].mid())       return Qurry(r << 1, L, R, b);     else if (R <= a[r].mid())       return Qurry(r << 1 | 1, L, R, b);     else {       long long a1 = Qurry(r << 1 | 1, L, a[r].mid(), b);       long long a2 = Qurry(r << 1, a[r].mid() + 1, R, b);       return a1 + a2;     }   }   int main() {     int q;     while (scanf( %d , &n) != EOF) {       memset(a, 0, sizeof(0));       int u, v;       BuildTree(1, 1, n);       scanf( %d %d %d %d , &k, &x, &y, &q);       while (q--) {         int kk;         scanf( %d , &kk);         if (kk == 1) {           scanf( %d %d , &u, &v);           Update(1, u, v);         } else {           scanf( %d , &u);           long long int sum1 = Qurry(1, 1, u - 1, 1);           long long int sum2 = Qurry(1, u + k, n, 2);           printf( %lld n , sum1 + sum2);         }       }     }     return 0;   }   