Pagini recente » Cod sursa (job #2720815) | Cod sursa (job #1903975) | Cod sursa (job #2977902) | Cod sursa (job #2605467) | Cod sursa (job #3254405)
#include <fstream>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
int const NMAX = 15000;
int arr[1 + NMAX];
int const NNMAX = 123;
int sum[1 + NMAX];
int const bucketSize = 123;
int findBucket(int pos) {
return (pos-1) / bucketSize + 1;
}
int main() {
int n, m;
in >> n >> m;
for(int i = 1;i <= n;i++) {
in >> arr[i];
sum[findBucket(i)] += arr[i];
}
for(int q = 1;q <= m;q++) {
int cer, a, b;
in >> cer >> a >> b;
if(cer == 0) {
arr[a] -= b;
sum[findBucket(a)] -= b;
}else {
int ans = 0, bucketA = findBucket(a), bucketB = findBucket(b);
if(bucketA == bucketB) {
for(int i = a;i <= b;i++) {
ans += arr[i];
}
}else {
for(int i = a;findBucket(i) == bucketA;i++) {
ans += arr[i];
}
for(int i = bucketA + 1;i < bucketB;i++) {
ans += sum[i];
}
for(int i = b;findBucket(i) == bucketB;i--) {
ans += arr[i];
}
}
out << ans << '\n';
}
}
return 0;
}