Pagini recente » Borderou de evaluare (job #2746765) | Borderou de evaluare (job #2504915) | Cod sursa (job #1162826) | Borderou de evaluare (job #2578220) | Cod sursa (job #3328693)
#include <fstream>
#include <cmath>
using namespace std;
ifstream cin("datorii.in");
ofstream cout("datorii.out");
const int nmax = 15e3;
const int bmax = 150;
int v[nmax + 1];
int batog[bmax + 1];
int main() {
int n, m, i;
int op, a, b, k, sum;
cin >> n >> m;
int len = sqrt(n);
for (i = 0; i < n; i++) {
cin >> v[i];
batog[i / len] += v[i];
}
for (k = 0; k < m; k++) {
cin >> op >> a >> b;
if (op == 0) {
a--;
v[a] -= b;
batog[a / len] -= b;
}
else {
a--;
b--;
sum = 0;
while (a <= b and a % len != 0) {
sum += v[a];
a++;
}
while (a + len - 1 <= b) {
sum += batog[a / len];
a += len;
}
while (a <= b) {
sum += v[a];
a++;
}
cout << sum << "\n";
}
}
return 0;
}