Pagini recente » Cod sursa (job #1207547) | Cod sursa (job #3180220) | Cod sursa (job #1953654) | Cod sursa (job #1754216) | Cod sursa (job #1147542)
#include<fstream>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int arb[15001], n, m, i, a, b, c;
void creste (int poz, int val){
while (poz <= n){
arb[poz] += val;
poz += (poz & -poz);
}
}
void scade (int poz, int val){
while (poz <= n){
arb[poz] -= val;
poz += (poz & -poz);
}
}
int aduna (int poz) {
int sol = 0;
while (poz > 0){
sol += arb[poz];
poz -= (poz & -poz);
}
return sol;
}
int main(){
fin >> n >> m;
for (i = 1; i <= n; i++){
fin >> a;
creste(i, a);
}
for (i = 1; i <= m; i++){
fin >> c;
if (c == 0){
fin >> a >> b;
scade(a, b);
}
if (c == 1){
fin >> a >> b;
fout << aduna(b) - aduna(a - 1) << '\n';
}
}
fin.close();
fout.close();
}