Pagini recente » Cod sursa (job #1924434) | Cod sursa (job #3305023) | Cod sursa (job #3264139) | Cod sursa (job #1897712) | Cod sursa (job #3311008)
#include <fstream>
#include <algorithm>
#include <iomanip>
#include <numeric>
#include <bitset>
#include <string>
#include <vector>
#include <cmath>
#include <queue>
#include <deque>
#include <stack>
#include <map>
#define int long long
#define f first
#define s second
using namespace std;
ifstream cin("aib.in");
ofstream cout("aib.out");
int n, m, v[100005], s[100005], c, a, b;
void update(int p, int val){
while (p <= n){
s[p] += val;
p += p & (-p);
}
}
int query(int p){
int sum = 0;
while (p != 0){
sum += s[p];
p -= p & (-p);
}
return sum;
}
signed main(){
cin>>n>>m;
for (int i = 1; i <= n; i++){
cin>>v[i];
update(i, v[i]);
}
for (int i = 1; i <= m; i++){
cin>>c;
if (c == 0){
cin>>a>>b;
update(a, b);
}
if (c == 1){
cin>>a>>b;
cout<<query(b) - query(a - 1)<<"\n";
}
if (c == 2){
cin>>a;
for (int j = 0; j <= n; j++){
if (query(j) == a){
cout<<j<<"\n";
break;
}
}
}
}
}