#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define INF (1<<29) #define rep(i,n) for(int i=0;i<(int)(n);i++) #define all(v) v.begin(),v.end() #define uniq(v) v.erase(unique(all(v)),v.end()) class BIT {//binary indexed tree, Fenwick treeとも int lg; std::vector bit; public: BIT(int size) :bit(size + 1, 0) { lg = size; while (lg & lg - 1)lg &= lg - 1; } void add(int i, int x) {//i番目にx加える i++;//BIT添え字は1~nだから while (i < (int)bit.size()) { bit[i] += x; i += i & -i; } } int sum(int a)const {//[0,a]の和 a++; int res = 0; while (0 < a) { res += bit[a]; a -= a & -a; } return res; } long long sum(int a, int b)const {//[a,b]の合計 return sum(b) - sum(a - 1); } }; int n, q; char c[200000]; int x[200000]; int y[200000]; int a[200000]; long long b[200000]; int main() { ios::sync_with_stdio(0); cin.tie(0); cin >> n >> q; rep(i, n)cin >> a[i]; rep(i,q) { cin >> c[i] >> x[i] >> y[i]; } long long cnt = 0; BIT le(n), ri(n); for (int i = q - 1; i >= 0; i--) { if (c[i] == 'A') { x[i]--; b[x[i]] += y[i] * (cnt - le.sum(x[i]) - ri.sum(n - 1 - x[i])); } else { cnt++; x[i]--; y[i]--; if (y[i] + 1 < n)le.add(y[i] + 1, 1); if (0 < x[i])ri.add(n - 1 - (x[i] - 1), 1); } } rep(i, n) { b[i] += a[i] * (cnt - le.sum(i) - ri.sum(n - 1 - i)); } rep(i, n) { if (i)cout << ' '; cout << b[i]; } cout << endl; return 0; }