Submission #1324878

#TimeUsernameProblemLanguageResultExecution timeMemory
1324878andy_vokizSterilizing Spray (JOI15_sterilizing)C++20
0 / 100
29 ms1664 KiB
#include <bits/stdc++.h>
#define fio ios_base::sync_with_stdio(0); cin.tie(0);

using namespace std;
vector<int> segt;
void build(int i, int l, int r, vector<int>& v){
    if(l == r){
        segt[i] = v[l];
    }else{
        int mid = (l+r)/2;
        build(i*2, l ,mid, v);
        build(i*2+1, mid+1, r, v);
        segt[i] = segt[i*2]+segt[i*2+1];
    }
}
void seti(int i, int l, int r, int pos, int val){
    if(l == r){
        segt[i] = val;
    }else{
        int mid = (l+r)/2;
        if(pos <= mid){
            seti(i*2, l, mid, pos, val);
        }else{
            seti(i*2+1, mid+1, r, pos, val);
        }
    }
}
int sumi(int i, int l, int r, int lb, int rb){
    if(r < lb || l > rb){
        return 0;
    }else if(l >= lb && r <= rb){
        return segt[i];
    }else{
        int mid = (l+r)/2;
        return sumi(i*2, l, mid, lb, rb) + sumi(i*2+1, mid+1, r, lb, rb);
    }
}
int main()
{
    fio
    int n, q, k;
    cin >> n >> q >> k;
    vector<int> v(n);
    for(int i = 0; i < n; ++i){
        cin >> v[i];
    }
    segt.resize(4*n);
    build(1, 0, n-1, v);
    for(int i = 0; i < q; ++i){
        int op;
        cin >> op;
        if(op == 1){
            int a, b;
            cin >> a >> b;
            --a;
            seti(1, 0, n-1, a, b);
        }else if(op == 2){
            int l, r;
            cin >> l >> r;
        }else if(op == 3){
            int l, r;
            cin >> l >> r;
            --l;
            --r;
            cout << sumi(1, 0, n-1, l, r);
        }
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...