Pagini recente » Cod sursa (job #2868260) | Cod sursa (job #830605) | Cod sursa (job #1122193) | Cod sursa (job #2965773) | Cod sursa (job #3291223)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
const int NMAX = 15000;
int a[NMAX + 5], sp[NMAX + 5], aib[NMAX + 5];
long long pow(int b, int e){
int p = 1;
for(int bit = 1; bit <= e; bit <<= 1){
if(e & bit)
p *= b;
b *= b;
e >> 1;
}
return p;
}
void readData(int n){
for(int i = 1; i <= n; i++){
fin >> a[i];
sp[i] = a[i] + sp[i - 1];
}
}
void initAIB(int n){
for(int i = 1; i <= n; i++){
if(i & 1)
aib[i] = a[i];
else{
aib[i] = sp[i] - sp[i - (i & (-i))];
}
}
}
void update(int poz, int val, int n){
for(int i = poz; i <= n; i += i & (-i))
aib[i] -= val;
}
long long query(int poz){
long long s;
s = 0;
for(int i = poz; i > 0; i -= i & (-i))
s += aib[i];
return s;
}
int main()
{
int n, m;
fin >> n >> m;
readData(n);
initAIB(n);
for(int i = 1; i <= m; i++){
int q;
fin >> q;
if(q == 0){
int t, v;
fin >> t >> v;
update(t, v, n);
}
if(q == 1){
int p, q;
fin >> p >> q;
fout << query(q) - query(p - 1) << "\n";
}
}
fin.close();
fout.close();
return 0;
}