diff --git a/Problems/NepsAcademy/neps_43.cpp b/Problems/NepsAcademy/neps_43.cpp new file mode 100644 index 0000000..a6cf49e --- /dev/null +++ b/Problems/NepsAcademy/neps_43.cpp @@ -0,0 +1,50 @@ +#include + +using namespace std; +vector bit, vetor_100pct_original; + +void update_bit(int pos, int x){ + int pracsum = -vetor_100pct_original[pos-1]; + vetor_100pct_original[pos-1] = x; + for(; pos <= bit.size(); pos += (pos&-pos)){ + bit[pos] += pracsum + x; + } +} + +int sumrange_bit(int pos){ + int answ = 0; + for(; pos > 0; pos -= (pos&-pos)){ + answ += bit[pos]; + } + return answ; +} + +int main(){ + ios::sync_with_stdio(false); + + int n,q, x, t,k,p; + cin >> n >> q; + + bit.assign(n+1,0); + vetor_100pct_original.assign(n,0); + for(int i = 1; i <= n; i++){ + cin >> x; + bit[i] += x; + vetor_100pct_original[i-1] = x; + for(int j = i+(i&-i); j <= n; j += (j&-j)){ + bit[j] += x; + } + } + + while(q--){ + cin >> t >> k; + if(t == 0){ + cin >> p; + update_bit(k, p); + }else{ + cout << sumrange_bit(k) << '\n'; + } + } + + return 0; +} \ No newline at end of file