#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define rep(i, a, b) for (long long i = (a); (i) < (b); (i)++) #define all(i) i.begin(), i.end() #define debug(...) std::cerr << "[" << #__VA_ARGS__ << "]:", debug_out(__VA_ARGS__) void debug_out(){std::cerr< void debug_out(Head h,Tail... t){ std::cerr<<" "< std::ostream& operator<<(std::ostream& os, std::pair pa) { return os << pa.first << " " << pa.second; } template std::ostream& operator<<(std::ostream& os, std::vector vec) { for (int i = 0; i < vec.size(); i++)os << vec[i] << (i + 1 == vec.size() ? "" : " "); return os; } template inline bool chmax(T1& a,T2 b){return a inline bool chmin(T1& a,T2 b){return a>b && (a=b,true);} long long pow_mod(long long a, long long b, long long mod=-1) { if(b==0)return 1; if ((a == 0)||(mod!=-1&&(a+mod)%mod==0))return 0; long long x = 1; while (b > 0) { if (b & 1)x = (mod!=-1)?(x * a) % mod:x*a; a = (mod!=-1)?(a * a) % mod:a*a; b >>= 1; } return x; } //const long long MOD = 998244353; const long long MOD = 1e9 + 7; using ll = long long; using P=std::pair; //遅延セグ木 template class LazySegmentTree{ private: int n,n0; std::vector dat; std::vector lazy; T init_t; E init_e; using F=std::function; using G=std::function; using H=std::function; using P=std::function; F f; G g; H h; P p; T update(int a,int b,E val,int l,int r,int k){ if(lazy[k]!=init_e){ if(k dat_=std::vector(),P p_=[](E a,int n){return a;}) :n(n_),init_t(t),init_e(e),f(f_),g(g_),h(h_),p(p_){ n0=1; while(n0(2*n0-1,init_t); lazy=std::vector(2*n0-1,init_e); if(n_==dat_.size()){ for(int i=0;i=0;i--)dat[i]=f(dat[2*i+1],dat[2*i+2]); } } void update(int a,int b,E val){ update(a,b,val,0,n0,0); } T query(int a,int b){ return query(a,b,0,n0,0); } }; int main() { std::cin.tie(nullptr); std::ios::sync_with_stdio(false); ll n,q; std::cin>>n>>q; std::vector a(n); rep(i,0,n)std::cin>>a[i]; auto sum=[](ll a,ll b){return a+b;}; auto mul=[](ll a,int n){return a*n;}; LazySegmentTree seg(n,sum,sum,sum,0,0,std::vector(n,0),mul); using Query=std::tuple; std::vector que; rep(i,0,q){ char c; ll x,y; std::cin>>c>>x>>y; x--; que.emplace_back(c,x,y); } std::vector ans(n,0); for(ll i=q-1;i>=0;i--){ ll x=std::get<1>(que[i]); ll y=std::get<2>(que[i]); if(std::get<0>(que[i])=='A'){ ans[x]+=y*seg.query(x,x+1); }else{ seg.update(x,y,1); } } rep(i,0,n){ std::cout<