Pagini recente » Cod sursa (job #1878930) | Cod sursa (job #1666828) | Cod sursa (job #874729) | Cod sursa (job #2035685) | Cod sursa (job #2687196)
//ALEXANDRU MICLEA
#include <vector>
#include <algorithm>
#include <string>
#include <string.h>
#include <cstring>
#include <queue>
#include <map>
#include <set>
#include <unordered_map>
#include <time.h>
#include <iomanip>
#include <deque>
#include <math.h>
#include <cmath>
#include <assert.h>
#include <stack>
#include <bitset>
#include <random>
#include <chrono>
#include <assert.h>
using namespace std;
using ll = long long;
#include <fstream>
//ifstream cin("input.in"); ofstream cout("output.out");
ifstream cin("datorii.in"); ofstream cout("datorii.out");
//VARIABLES
int n, m;
vector <int> bit(15005);
//FUNCTIONS
void init (int pos, int val){
for (int i = pos; i <= n; i += i & (-i)) bit[i] += val;
}
void update (int pos, int val){
for (int i = pos; i <= n; i += i & (-i)) bit[i] -= val;
}
int query (int pos){
int ans = 0;
for (int i = pos; i >= 1; i -= i & (-i)) ans += bit[i];
return ans;
}
//MAIN
int main() {
cin >> n >> m;
for (int i = 1; i <= n; i++){
int val; cin >> val;
init(i, val);
}
for (int i = 1; i <= m; i++){
int tip, a, b;
cin >> tip >> a >> b;
if (tip == 0) update (a, b);
if (tip == 1) {
//for (int j = 1; j <= n; j++) cout << bit[i] << ' ';
//cout << '\n';
cout << query(b) - query(a - 1) << '\n';
}
}
return 0;
}