Pagini recente » Cod sursa (job #2573827) | Cod sursa (job #1827007) | Cod sursa (job #2596150) | Cod sursa (job #1710004) | Cod sursa (job #2878509)
#include <fstream>
#define lsb(x) x & (-x)
using namespace std;
ifstream cin("datorii.in");
ofstream cout("datorii.out");
const int N = 15005;
int a[N], aib[N];
int n, m;
void update(int pos, int val)
{
for(int i = pos; i <= n; i += lsb(i))
aib[i] += val;
}
int query(int pos)
{
int res = 0;
for(int i = pos; i >= 1; i -= lsb(i))
res += aib[i];
return res;
}
struct da
{
bool b;
int st, dr;
} punct;
int main()
{
cin >> n >> m;
for(int i = 1; i <= n; ++i)
{
cin >> a[i];
update(i, a[i]);
}
for(int i = 1; i <= m; ++i)
{
int op, a, b;
cin >> punct.b >> punct.st >> punct.dr;
if(!punct.b)
update(punct.st, -punct.dr);
else
cout << query(punct.dr) - query(punct.st - 1) << '\n';
}
return 0;
}