#define _CRT_SECURE_NO_WARNINGS #pragma comment (linker, "/STACK:526000000") #include "bits/stdc++.h" using namespace std; typedef string::const_iterator State; #define eps 1e-11L #define MAX_MOD 1000000007LL #define GYAKU 500000004LL #define MOD 998244353LL #define seg_size 262144 #define pb push_back #define mp make_pair typedef long long ll; #define REP(a,b) for(long long (a) = 0;(a) < (b);++(a)) #define ALL(x) (x).begin(),(x).end() unsigned long xor128() { static unsigned long x = 123456789, y = 362436069, z = 521288629, w = time(NULL); unsigned long t = (x ^ (x << 11)); x = y; y = z; z = w; return (w = (w ^ (w >> 19)) ^ (t ^ (t >> 8))); } void init() { iostream::sync_with_stdio(false); cout << fixed << setprecision(20); } #define int ll ll seg_tree[seg_size * 4]; ll lazy_seg[seg_size * 4]; ll seg_find(int now, int n_l, int n_r, int w_l, int w_r, int settings) { if (w_l <= n_l && n_r <= w_r) { lazy_seg[now] += settings; } if (lazy_seg[now] != 0) { seg_tree[now] += lazy_seg[now]; lazy_seg[now * 2] += lazy_seg[now]; lazy_seg[now * 2 + 1] += lazy_seg[now]; lazy_seg[now] = 0; } if (w_l <= n_l && n_r <= w_r) { return seg_tree[now]; } if (w_r <= n_l || n_r <= w_l) { return 0; } return seg_find(now * 2, n_l, (n_l + n_r) / 2, w_l, w_r, settings) + seg_find(now * 2 + 1, (n_l + n_r) / 2, n_r, w_l, w_r, settings); } ll ans[300000]; void solve() { int n, query; cin >> n >> query; vector> queries; REP(i, n) { int a; cin >> a; queries.push_back(make_tuple(0, a, i)); } REP(i, query) { int b, c; string a; cin >> a >> b >> c; b--; c--; if (a == "A") { queries.push_back(make_tuple(0, c + 1LL, b)); } else { queries.push_back(make_tuple(1, b, c)); } } reverse(ALL(queries)); REP(i, queries.size()) { if (get<0>(queries[i]) == 1) { seg_find(1, 0, seg_size, get<1>(queries[i]), get<2>(queries[i]) + 1, 1); } else { ans[get<2>(queries[i])] += get<1>(queries[i]) * seg_find(1, 0, seg_size, get<2>(queries[i]), get<2>(queries[i]) + 1, 0); } } REP(i, n) { if (i != 0) cout << " "; cout << ans[i]; } cout << endl; } #undef int int main() { init(); solve(); }