Pagini recente » Cod sursa (job #918477) | Cod sursa (job #1435286) | Cod sursa (job #2647754) | Cod sursa (job #1606745) | Cod sursa (job #3240963)
#include "bits/stdc++.h"
#define ll long long int
const int DIM = 150000;
ll aib[DIM + 5], n, q;
inline static void Update(int index, int val){
while(index <= n){
aib[index] = aib[index] + val;
index = index + (index & (-index));
}
}
inline static ll Query(int index){
ll sum = 0;
while(index > 0){
sum = sum + aib[index];
index = index - (index & (-index));
}
return sum;
}
inline static void Q0(){
int a, b;
std :: cin >> a >> b;
Update(a, b);
}
inline static void Q1(){
int a, b;
std :: cin >> a >> b;
std :: cout << Query(b) - Query(a-1) << '\n';
}
inline static void Q2(){
int a;
std :: cin >> a;
int st = 1, dr = n;
while(st <= dr){
int mij = (st + dr) / 2;
if(Query(mij) >= a){
dr = mij - 1;
}else{
st = mij + 1;
}
}
std :: cout << st << '\n';
}
inline static void Solve(){
std :: cin >> n >> q;
for(int i = 1; i <= n; i++){
int x;
std :: cin >> x;
Update(i, x);
}
while(q -- ){
char op;
std :: cin >> op;
if(op == '0'){
Q0();
}
if(op == '1'){
Q1();
}
if(op == '2'){
Q2();
}
}
}
signed main(){
freopen("aib.in","r",stdin);
freopen("aib.out","w",stdout);
std :: ios_base :: sync_with_stdio(false);
std :: cin.tie(0);
std :: cout.tie(0);
Solve();
return 0;
}