Pagini recente » Cod sursa (job #1153946) | Cod sursa (job #2088005) | Cod sursa (job #187582) | Cod sursa (job #3212829) | Cod sursa (job #2619964)
#include <bits/stdc++.h>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int n, m, a[200001], i, j, idx, val, ziua, bonus, command, suma, l, r;
int main()
{
f>>n>>m;
int a[n*2];
for(i = n; i < n*2; i++)
f>>a[i];
for(i = n-1; i >= 1; i--)
a[i] = a[i * 2] + a[i * 2 + 1];
for(i = 1; i <= m; i++){
f>>command;
switch(command)
{
case 1:
{
f>>l>>r;
l += n-1;
r += n;
suma = 0;
while(l < r){
if(l % 2 != 0){
suma += a[l];
l++;
}
if(r % 2 != 0){
r--;
suma += a[r];
}
l = l / 2;
r = r / 2;
}
g<<suma<<"\n";
break;
}
case 0:
{
f>>ziua>>val;
ziua += n-1;
a[ziua] -= val;
while(ziua > 1){
ziua = ziua / 2;
a[ziua] = a[ziua * 2] + a[ziua * 2 + 1];
}
break;
}
default:
break;
}
}
return 0;
}