Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define MAXN 100005
- #define pii pair<int, int>
- using namespace std;
- long long segta[4 * MAXN];
- long long segtb[4 * MAXN];
- long long query(long long (&segt)[4*MAXN], int id, int l, int r, int ql, int qr){
- if(ql <= l && r <= qr)
- return segt[id];
- if(qr < l || r < ql)
- return 0;
- int m = (r + l)/2;
- return query( segt, 2 * id, l, m, ql, qr) + query( segt, 2 * id + 1, m + 1, r, ql, qr);
- }
- void update(long long (&segt)[4*MAXN], int id, int l, int r, int p, long long v, int lim){
- if(v > lim)
- v = lim;
- if(l == r)
- segt[id] = v;
- else{
- int m = (r + l)/2;
- if(p <= m)
- update(segt, 2 * id, l, m, p, v, lim);
- else
- update(segt, 2 * id + 1, m + 1, r, p, v, lim);
- segt[id] = segt[id * 2] + segt[id * 2 + 1];
- }
- }
- int main(){
- memset(segta, 0, 4 * MAXN);
- memset(segtb, 0, 4 * MAXN);
- int n, k, a, b, q, c, x, y;
- cin >> n >> k >> a >> b >> q;
- for(int i = 0; i < q; i++){
- cin >> c;
- if(c == 1){
- cin >> x >> y;
- update(segta, 1, 1, n, x, y, a);
- update(segtb, 1, 1, n, x, y, b);
- }
- else{
- cin >> x;
- cout << query(segtb, 1, 1, n, 1, x - 1)
- + query(segta, 1, 1, n, x + k - 1, n) << endl;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement