不是哪一题,自己随手打的
#include <bits/stdc++.h>
using namespace std;
uint32_t change_num=0;
struct node{
vector<pair<uint32_t,int>>vec;
}arr[114514];
inline void init_node(const uint32_t at,const int val){
arr[at].vec.clear();
arr[at].vec.push_back(make_pair(0,val));
}
inline void change_node(const uint32_t at,const int val){
change_num+=1;
arr[at].vec.push_back(make_pair(change_num,val));
}
inline int get_val(const uint32_t at,const uint32_t vers){
return arr[at].vec[
(upper_bound(arr[at].vec.begin(),arr[at].vec.end(),vers) - arr[at].vec.begin()) --
].second;
}
uint32_t n,tmp,t,opt,p,vs,vl;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(nullptr);
cin>>n>>t;
for(uint32_t i=1;i<=n;++i){
cin>>tmp;
init_node(i,tmp);
}
while(t--){
cin>>opt>>p>>vs;
if(opt==1){
cout<<get_val(p,vs)<<"\n";
}else{
cin>>vl;
change_node(p,get_val(p,vs)+vl);
}
}
return 0;
}