Pagini recente » Cod sursa (job #1821342) | Cod sursa (job #2302442) | Cod sursa (job #1355775) | Cod sursa (job #2375368) | Cod sursa (job #2719256)
#include <bits/stdc++.h>
using namespace std;
int v[150001];
int aib[15001];
int n, m;
ifstream in ("datorii.in");
ofstream out ("datorii.out");
void build ()
{
for (int i = 1;i<=n;++i)
for (int j = i;j<=n;j += j & (-j))
aib[j] += v[i];
}
int cat (int poz)
{
int ans = 0;
for (int i = poz;i > 0; i -= i & (-i))
ans += aib[i];
return ans;
}
int query (int st, int dr)
{
return cat(dr) - cat(st - 1);
}
void update (int poz, int val)
{
for (int i = poz;i<=n;i+= i & (-i))
aib[i] -= val;
}
int main ()
{
in >> n >> m;
for (int i = 1;i<=n;++i)
in >> v[i];
build();
for (int i = 1;i<=m;++i)
{
int type;
in >> type;
if (type == 1)
{
int st, dr;
in >> st >> dr;
out << query(st, dr) << '\n';
}
else
{
int poz, val;
in >> poz >> val;
update(poz, val);
}
}
return 0;
}