This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
const int maxn = 1e5 + 1;
int n, k, a[maxn];
long long t[4 * maxn];
void make_tree(int i, int l, int r){
    if(l == r){
        t[i] = a[r];
        return;
    }
    int mid = (l + r) / 2;
    make_tree(2 * i, l, mid);
    make_tree(2 * i + 1, mid + 1, r);
    t[i] = t[2 * i] + t[2 * i + 1];
}
long long query(int i, int l, int r, int ql, int qr){
    if(l == ql && r == qr){
        return t[i];
    }
    int mid = (l + r) / 2;
    if(qr <= mid) return query(2 * i, l, mid, ql ,qr);
    if(ql > mid) return query(2 * i + 1, mid + 1, r, ql, qr);
    return query(2 * i, l, mid, ql, mid) + query(2 * i + 1, mid + 1, r, mid + 1, qr);
}
void solve(){
    int q;
    cin >> q;
    while(q--){
        int type;
        cin >> type;
        if(type == 1){
            for(int i = 0;i < k;i++){
                int a;
                cin >> a;
            }
            continue;
        }
        int l, r, m;
        cin >> l >> r >> m;
        long long ans = 0;
        for(int i = l;i <= r;i++){
            int br_seg = 0;
            int br_left = min(i - l + 1, m);
            br_seg = min(br_left, r - i + 1);
            ans += br_seg * a[i];
        }
        cout << ans << endl;
    }
}
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin >> n >> k;
    for(int i = 1;i <= n;i++){
        cin >> a[i];
    }
    make_tree(1, 1, n);
    solve();
    return 0;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |