Pagini recente » Cod sursa (job #69544) | Cod sursa (job #512941) | Cod sursa (job #748539) | Cod sursa (job #487029) | Cod sursa (job #3338896)
#include <fstream>
using namespace std;
const int MAXN = 15005;
int N, M;
int arbore[MAXN];
void adauga(int poz, int valoare) {
for (int i = poz; i <= N; i += i & -i)
arbore[i] += valoare;
}
int sumaPrefix(int poz) {
int suma = 0;
for (int i = poz; i > 0; i -= i & -i)
suma += arbore[i];
return suma;
}
int sumaInterval(int st, int dr) {
return sumaPrefix(dr) - sumaPrefix(st - 1);
}
int main() {
ifstream fin("datorii.in");
ofstream fout("datorii.out");
fin >> N >> M;
for (int i = 1; i <= N; i++) {
int valoare;
fin >> valoare;
adauga(i, valoare);
}
for (int i = 1; i <= M; i++) {
int operatie, a, b;
fin >> operatie >> a >> b;
if (operatie == 0) {
adauga(a, -b);
}
else {
fout << sumaInterval(a, b) << "\n";
}
}
fin.close();
fout.close();
return 0;
}