Pagini recente » Cod sursa (job #350832) | Cod sursa (job #405857) | Cod sursa (job #2805176) | Cod sursa (job #544600) | Cod sursa (job #1249498)
/*
Punctaj final pe sursa curenta:
*/
#include <fstream>
using namespace std;
ifstream is ("datorii.in");
ofstream os ("datorii.out");
int N, M;
int AIB[15005];
void Update(int pos, int val);
int Sum(int pos);
int main()
{
is >> N >> M;
for (int i = 1, X; i <= N; ++i)
{
is >> X;
Update(i, X);
}
for (int i = 1, op, A, B; i <= M; ++i)
{
is >> op >> A >> B;
if (op == 0)
Update(A, -B);
else
{
os << Sum(B) - Sum(A-1) << '\n';
}
}
is.close();
os.close();
}
void Update(int pos, int val)
{
for (int i = pos; i <= N; i += (i & -i))
AIB[i] = max(0, AIB[i]+val);
};
int Sum(int pos)
{
int S = 0;
for (int i = pos; i > 0; i -= (i & -i))
S += AIB[i];
return S;
};