Pagini recente » Cod sursa (job #982077) | Cod sursa (job #2408681) | Cod sursa (job #2911096) | Cod sursa (job #840863) | Cod sursa (job #3266105)
#include <bits/stdc++.h>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
struct DS
{
int n;
vector<long long> arr;
DS(int n): n(n), arr(n+1, 0) {}
void upd(int i, long long v)
{
for(; i <= n; i += i & -i) arr[i] += v;
}
long long qry(int i)
{
long long s = 0;
for(; i > 0; i -= i & -i) s += arr[i];
return s;
}
long long rng(int l, int r)
{
return qry(r) - qry(l-1);
}
};
int main()
{
int N, M;
in >> N >> M;
DS d(N);
for(int i = 1; i <= N; i++)
{
long long v;
in >> v;
d.upd(i, v);
}
while(M--)
{
int c;
in >> c;
if(c == 0)
{
int t;
long long v;
in >> t >> v;
d.upd(t, -v);
}
else
{
int p, q;
in >> p >> q;
out << d.rng(p, q) << "\n";
}
}
return 0;
}