Pagini recente » Cod sursa (job #1886613) | Cod sursa (job #3218673) | Cod sursa (job #3190298) | Cod sursa (job #125073) | Cod sursa (job #2762137)
#include <fstream>
using namespace std;
const int Nmax = 15000;
int aib[Nmax + 1], a[Nmax + 1];
void build(int k, int x, int n)
{
while (k <= n)
{
aib[k] += x;
k += (k & -k);
}
}
void upd(int k, int x, int n)
{
while (k <= n)
{
aib[k] -= x;
k += (k & -k);
}
}
int qry(int k)
{
int ans = 0;
while (k >= 1)
{
ans += aib[k];
k -= (k & -k);
}
return ans;
}
int main()
{
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n, m;
fin >> n >> m;
for (int i = 1; i <= n; i++)
{
fin >> a[i];
build(i, a[i], n);
}
while (m--)
{
int t, p, q;
fin >> t >> p >> q;
if (t == 0)
{
upd(p, q, n);
}
else
{
fout << qry(q) - qry(p - 1) << "\n";
}
}
return 0;
}