Pagini recente » Borderou de evaluare (job #3343120) | Monitorul de evaluare | Cod sursa (job #3335393) | Cod sursa (job #324307) | Cod sursa (job #3311301)
#include <fstream>
#include <algorithm>
#include <iomanip>
#include <numeric>
#include <bitset>
#include <string>
#include <vector>
#include <cmath>
#include <queue>
#include <deque>
#include <stack>
#include <map>
#define int long long
#define f first
#define s second
using namespace std;
ifstream cin("datorii.in");
ofstream cout("datorii.out");
int n, m, v[15005], s[15005], c, a, b;
void update(int p, int val){
while (p <= n){
s[p] += val;
p += p & (-p);
}
}
int query(int p){
int sum = 0;
while (p > 0){
sum += s[p];
p -= p & (-p);
}
return sum;
}
signed main(){
cin>>n>>m;
for (int i = 1; i <= n; i++){
cin>>v[i];
update(i, v[i]);
}
for (int i = 1; i <= m; i++){
cin>>c>>a>>b;
if (c == 0){
update(a, -b);
}
else{
cout<<query(b) - query(a - 1)<<"\n";
}
}
}