Pagini recente » Cod sursa (job #1401946) | Cod sursa (job #2219871) | Cod sursa (job #2768082)
// Datorii.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
// Arbori indexati binar (Fenwick Tree)
#include <iostream>
#include <fstream>
#pragma warning(disable: 4996)
#define DIM 15006
#define POW2 16384
using namespace std;
#define zeros(x) ((x ^ (x - 1))& x)
FILE* fin, * fout;
int N, M;
int V[DIM], AIB[1 + POW2];
static inline void Read()
{
fscanf(fin, "%d %d", &N, &M);
int x;
for (int i = 1; i <= N; i++)
{
fscanf(fin, "%d", &x);
V[i] = V[i - 1] + x;
}
for (int i = 1; i <= N; i++)
AIB[i] = V[i] - V[i - zeros(i)];
}
void Add(int x, int quantity)
{
for (int i = x; i <= N; i += zeros(i))
AIB[i] += quantity;
}
int Compute(int x)
{
int ret = 0;
for (int i = x; i > 0; i -= zeros(i))
ret += AIB[i];
return ret;
}
static inline void Solve()
{
for (int op; M; M--)
{
fscanf(fin, "%d", &op);
if (op == 0)
{
int T, V;
fscanf(fin, "%d %d", &T, &V);
Add(T, -V);
}
else if (op == 1)
{
int P, Q;
fscanf(fin, "%d %d", &P, &Q);
int query = Compute(Q) - Compute(P - 1);
fprintf(fout, "%d\n", query);
}
}
}
int main()
{
fin = fopen("datorii.in", "r");
fout = fopen("datorii.out", "w");
Read();
Solve();
fclose(fin);
fclose(fout);
return 0;
}