Pagini recente » Cod sursa (job #751513) | Cod sursa (job #1311879) | Cod sursa (job #1614764) | Cod sursa (job #751917) | Cod sursa (job #191854)
Cod sursa(job #191854)
#include <cstdio>
using namespace std;
int main()
{
int aib[15001] = {}, n, m, x, y, z, s1, s2, k, i;
FILE *f1, *f2;
f1 = fopen("datorii.in", "r");
f2 = fopen("datorii.out", "w");
fscanf(f1, "%d%d", &n, &m);
for (i = 1; i <= n; ++i) {
fscanf(f1, "%d", &x);
k = i;
while (k <= n) {
aib[k] += x;
k += (~k + 1) & k;
}
}
for (i = 1; i <= m; ++i) {
fscanf(f1, "%d%d%d", &x, &y, &z);
if (x) { //suma
k = y - 1;
s1 = s2 = 0;
while (k > 0) {
s1 += aib[k];
k = ((~k + 1) & k) ^ k;
}
k = z;
while (k > 0) {
s2 += aib[k];
k = ((~k + 1) & k) ^ k;
}
fprintf(f2, "%d\n", s2 - s1);
}
else { //achitare
k = y;
while (k <= n) {
aib[k] -= z;
k += (~k + 1) & k;
}
}
}
fclose(f1);
fclose(f2);
return 0;
}