func_code_string: #include <bits/stdc++.h>   using namespace std;   struct st {     long long kici, san;     long long kici2, san2;   };   long long v[200010];   st T[200010 * 4];   long long t, x, y, q;   long long n, k, S, O;   void upd(long long pos, long long x, long long l, long long r, long long node) {     if (l == r) {       v[pos] += x;       if (v[pos] <= O)         T[node].kici += x;       else if (v[pos] - x <= O)         T[node].san++, T[node].kici -= v[pos] - x;       if (v[pos] <= S)         T[node].kici2 += x;       else if (v[pos] - x <= S)         T[node].san2++, T[node].kici2 -= v[pos] - x;       return;     }     if (pos <= (l + r) / 2)       upd(pos, x, l, (l + r) / 2, node * 2);     else       upd(pos, x, (l + r) / 2 + 1, r, node * 2 + 1);     T[node].san = T[node * 2].san + T[node * 2 + 1].san;     T[node].san2 = T[node * 2].san2 + T[node * 2 + 1].san2;     T[node].kici = T[node * 2].kici + T[node * 2 + 1].kici;     T[node].kici2 = T[node * 2].kici2 + T[node * 2 + 1].kici2;   }   long long tap(long long a, long long b, long long x, long long l, long long r,                 long long node) {     if (l > b || r < a) return 0;     if (l >= a && r <= b) {       if (x == 1)         return T[node].kici + T[node].san * O;       else         return T[node].kici2 + T[node].san2 * S;     }     return tap(a, b, x, l, (l + r) / 2, node * 2) +            tap(a, b, x, (l + r) / 2 + 1, r, node * 2 + 1);   }   int main() {     scanf( %lld%lld%lld%lld%lld , &n, &k, &S, &O, &q);     while (q--) {       scanf( %lld%lld , &t, &x);       if (t == 1) {         scanf( %lld , &y);         upd(x, y, 1, n, 1);       } else         printf( %lld n , tap(1, x - 1, 1, 1, n, 1) + tap(x + k, n, 2, 1, n, 1));     }   }   