Pagini recente » Cod sursa (job #2833864) | Cod sursa (job #1313612) | Cod sursa (job #1303792) | Monitorul de evaluare | Cod sursa (job #2074095)
#include <fstream>
#define MAXN 15005
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int sum[MAXN], s, n, m;
inline void Update(int poz, int val) {
for (; poz <= n; poz += (poz & (-poz))) {
sum[poz] += val;
}
}
inline int Query(int a, int b) {
int s = 0;
for (int i = a - 1; i; i -= (i & (-i))) {
s -= sum[i];
}
for (int i = b; i; i -= (i & (-i))) {
s += sum[i];
}
return s;
}
inline void Read() {
int tip, a, b;
fin >> n >> m;
for (int i = 1; i <= n; i++) {
fin >> a;
Update(i, a);
}
for (int i = 1; i <= m; i++) {
fin >> tip;
if (tip == 0) {
fin >> a >> b;
Update(a, -b);
}
else {
fin >> a >> b;
fout << Query(a, b) << "\n";
}
}
}
int main () {
Read();
fin.close(); fout.close(); return 0;
}