Pagini recente » hlo-2023-cls9-tema0 | Cod sursa (job #1556091) | Cod sursa (job #1471753) | Cod sursa (job #1796690) | Cod sursa (job #3182956)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("aib.in");
ofstream fout("aib.out");
int n;
int v[100005];
int aib[100005];
void update(int poz, int val){
for(; poz <= n; poz += poz & -poz) aib[poz] += val;
}
int query(int poz){
int s = 0;
for(; poz >= 1; poz -= poz & -poz) s += aib[poz];
return s;
}
int cb(int x){
int st = 1, dr = n, med;
while(st <= dr){
med = (st + dr) >> 1;
int e = query(med);
if(e == x) return med;
else if(e < x) st = med + 1;
else dr = med - 1;
}
return -1;
}
int main()
{
int q,i,j,c,a,b;
fin >> n >> q;
for(i = 1; i <= n; i++){
fin >> v[i];
update(i, v[i]);
}
for(i = 1; i <= q; i++){
fin >> c;
if(c == 0){
fin >> a >> b;
update(a,b);
}
else if(c == 1){
fin >> a >> b;
fout << query(b) - query(a - 1) << "\n";
}
else{
fin >> a;
fout << cb(a) << "\n";
}
}
return 0;
}