// ~~ icebear ~~
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
typedef pair<int, ii> iii;
template<class T>
bool minimize(T &a, const T &b) {
if (a > b) return a = b, true;
return false;
}
template<class T>
bool maximize(T &a, const T &b) {
if (a < b) return a = b, true;
return false;
}
#define FOR(i,a,b) for(int i=(a); i<=(b); ++i)
#define FORR(i,a,b) for(int i=(a); i>=(b); --i)
#define REP(i, n) for(int i=0; i<(n); ++i)
#define RED(i, n) for(int i=(n)-1; i>=0; --i)
#define MASK(i) (1LL << (i))
#define BIT(S, i) (((S) >> (i)) & 1)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define all(x) x.begin(), x.end()
#define task "raspored"
const int MOD = 1e9 + 7;
const int inf = 1e9 + 27092008;
const ll INF = 1e18 + 27092008;
const int N = 6e5 + 5;
int numPerson, numQuery, sizeTree;
ii person[N];
vector<int> compress;
int curUsed[N];
struct Query {
int pos, limit, doing;
} Q[N];
struct Node {
ll sumLimit, sumDoing, doingMul, lazy;
int cnt;
Node(ll _sumLimit = 0, ll _sumDoing = 0, ll _doingMul = 0, ll _lazy = 0, int _cnt = 0):
sumLimit(_sumLimit), sumDoing(_sumDoing), doingMul(_doingMul), lazy(_lazy), cnt(_cnt) {}
friend Node combine(const Node &L, const Node &R) {
Node res;
res.sumLimit = L.sumLimit + R.sumLimit;
res.sumDoing = L.sumDoing + R.sumDoing;
res.doingMul = L.doingMul + R.doingMul;
res.cnt = L.cnt + R.cnt;
return res;
}
} node[N << 2];
void pushDown(int id) {
if (node[id].lazy) {
node[id << 1].doingMul += node[id << 1].sumDoing * node[id].lazy;
node[id << 1].lazy += node[id].lazy;
node[id << 1 | 1].doingMul += node[id << 1 | 1].sumDoing * node[id].lazy;
node[id << 1 | 1].lazy += node[id].lazy;
node[id].lazy = 0;
}
}
void updatePos(int pos, int limit, int doing, int realPos, int sign) {
int id = 1, l = 1, r = sizeTree;
while(l < r) {
pushDown(id);
int mid = (l + r) >> 1;
if (pos > mid) id = (id << 1 | 1), l = mid + 1;
else id = (id << 1), r = mid;
}
node[id].doingMul += 1ll * doing * (realPos - 1) * sign;
node[id].sumDoing += doing * sign;
node[id].sumLimit += limit * sign;
node[id].cnt += sign;
while(id) {
id >>= 1;
node[id] = combine(node[id << 1], node[id << 1 | 1]);
}
}
void updateDoing(int id, int l, int r, int u, int v, int sign) {
if (l > v || r < u || u > v) return;
if (u <= l && r <= v) {
node[id].doingMul += node[id].sumDoing * sign;
node[id].lazy += sign;
return;
}
pushDown(id);
int mid = (l + r) >> 1;
updateDoing(id << 1, l, mid, u, v, sign);
updateDoing(id << 1 | 1, mid + 1, r, u, v, sign);
node[id] = combine(node[id << 1], node[id << 1 | 1]);
}
int getCnt(int id, int l, int r, int u, int v) {
if (l > v || r < u || u > v) return 0;
if (u <= l && r <= v) return node[id].cnt;
pushDown(id);
int mid = (l + r) >> 1;
int L = getCnt(id << 1, l, mid, u, v);
int R = getCnt(id << 1 | 1, mid + 1, r, u, v);
return L + R;
}
int findPos(int k) {
int id = 1, l = 1, r = sizeTree;
while(l < r) {
pushDown(id);
int mid = (l + r) >> 1;
if (node[id << 1].cnt >= k) {
id = (id << 1);
r = mid;
} else {
k -= node[id << 1].cnt;
id = (id << 1 | 1);
l = mid + 1;
}
}
return l;
}
ll solve() {
// sum(t[i]) - sum(d[i] * (n - i + 1)) = sum(t[i]) - sum(d[i] * n) + sum(d[i] * (i - 1))
// cout << node[1].sumLimit << ' ' << node[1].sumDoing << ' ' << node[1].doingMul << '\n';
return node[1].sumLimit - node[1].sumDoing * numPerson + node[1].doingMul;
}
int getCompress(int x) {
int pos = lower_bound(all(compress), x) - compress.begin() + 1;
return pos + (curUsed[pos]++);
}
int getRealPos(int pos) {
int res = getCnt(1, 1, sizeTree, 1, pos - 1);
return res + 1;
}
int traceRealPos(int realPos) {
if (realPos > node[1].cnt) return sizeTree + 1;
int res = findPos(realPos);
return res;
}
void init(void) {
int subtask; cin >> subtask;
cin >> numPerson >> numQuery;
FOR(i, 1, numPerson) cin >> person[i].fi >> person[i].se, compress.pb(person[i].se);
FOR(i, 1, numQuery) cin >> Q[i].pos >> Q[i].limit >> Q[i].doing, compress.pb(Q[i].doing);
sizeTree = numPerson + numQuery;
}
void process(void) {
sort(all(compress));
FOR(i, 1, numPerson) person[i].se = getCompress(person[i].se);
FOR(i, 1, numQuery) Q[i].doing = getCompress(Q[i].doing);
FOR(i, 1, numPerson) {
int realPos = getRealPos(person[i].se);
updateDoing(1, 1, sizeTree, traceRealPos(realPos), sizeTree, +1);
updatePos(person[i].se, person[i].fi, compress[person[i].se - 1], realPos, +1);
}
cout << solve() << ' ';
FOR(j, 1, numQuery) {
int i = Q[j].pos;
int realPos = getRealPos(person[i].se);
// erase old info
updatePos(person[i].se, person[i].fi, compress[person[i].se - 1], realPos, -1);
updateDoing(1, 1, sizeTree, traceRealPos(realPos), sizeTree, -1);
// change new info
person[i].se = Q[j].doing;
person[i].fi = Q[j].limit;
realPos = getRealPos(person[i].se);
updateDoing(1, 1, sizeTree, traceRealPos(realPos), sizeTree, +1);
updatePos(person[i].se, person[i].fi, compress[person[i].se - 1], realPos, +1);
cout << solve() << ' ';
}
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
if (fopen(task".inp", "r")) {
freopen(task".inp", "r", stdin);
freopen(task".out", "w", stdout);
}
int tc = 1;
// cin >> tc;
while(tc--) {
init();
process();
}
return 0;
}
Ly8gfn4gaWNlYmVhciB+fgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IGlpOwp0eXBlZGVmIHBhaXI8aW50LCBpaT4gaWlpOwoKdGVtcGxhdGU8Y2xhc3MgVD4KICAgIGJvb2wgbWluaW1pemUoVCAmYSwgY29uc3QgVCAmYikgewogICAgICAgIGlmIChhID4gYikgcmV0dXJuIGEgPSBiLCB0cnVlOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCnRlbXBsYXRlPGNsYXNzIFQ+CiAgICBib29sIG1heGltaXplKFQgJmEsIGNvbnN0IFQgJmIpIHsKICAgICAgICBpZiAoYSA8IGIpIHJldHVybiBhID0gYiwgdHJ1ZTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgojZGVmaW5lIEZPUihpLGEsYikgZm9yKGludCBpPShhKTsgaTw9KGIpOyArK2kpCiNkZWZpbmUgRk9SUihpLGEsYikgZm9yKGludCBpPShhKTsgaT49KGIpOyAtLWkpCiNkZWZpbmUgUkVQKGksIG4pIGZvcihpbnQgaT0wOyBpPChuKTsgKytpKQojZGVmaW5lIFJFRChpLCBuKSBmb3IoaW50IGk9KG4pLTE7IGk+PTA7IC0taSkKI2RlZmluZSBNQVNLKGkpICgxTEwgPDwgKGkpKQojZGVmaW5lIEJJVChTLCBpKSAoKChTKSA+PiAoaSkpICYgMSkKI2RlZmluZSBtcCBtYWtlX3BhaXIKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGFsbCh4KSB4LmJlZ2luKCksIHguZW5kKCkKI2RlZmluZSB0YXNrICJyYXNwb3JlZCIKCmNvbnN0IGludCBNT0QgPSAxZTkgKyA3Owpjb25zdCBpbnQgaW5mID0gMWU5ICsgMjcwOTIwMDg7CmNvbnN0IGxsIElORiA9IDFlMTggKyAyNzA5MjAwODsKY29uc3QgaW50IE4gPSA2ZTUgKyA1OwppbnQgbnVtUGVyc29uLCBudW1RdWVyeSwgc2l6ZVRyZWU7CmlpIHBlcnNvbltOXTsKdmVjdG9yPGludD4gY29tcHJlc3M7CmludCBjdXJVc2VkW05dOwoKc3RydWN0IFF1ZXJ5IHsKICAgIGludCBwb3MsIGxpbWl0LCBkb2luZzsKfSBRW05dOwoKc3RydWN0IE5vZGUgewogICAgbGwgc3VtTGltaXQsIHN1bURvaW5nLCBkb2luZ011bCwgbGF6eTsKICAgIGludCBjbnQ7CgogICAgTm9kZShsbCBfc3VtTGltaXQgPSAwLCBsbCBfc3VtRG9pbmcgPSAwLCBsbCBfZG9pbmdNdWwgPSAwLCBsbCBfbGF6eSA9IDAsIGludCBfY250ID0gMCk6CiAgICAgICAgc3VtTGltaXQoX3N1bUxpbWl0KSwgc3VtRG9pbmcoX3N1bURvaW5nKSwgZG9pbmdNdWwoX2RvaW5nTXVsKSwgbGF6eShfbGF6eSksIGNudChfY250KSB7fQoKICAgIGZyaWVuZCBOb2RlIGNvbWJpbmUoY29uc3QgTm9kZSAmTCwgY29uc3QgTm9kZSAmUikgewogICAgICAgIE5vZGUgcmVzOwogICAgICAgIHJlcy5zdW1MaW1pdCA9IEwuc3VtTGltaXQgKyBSLnN1bUxpbWl0OwogICAgICAgIHJlcy5zdW1Eb2luZyA9IEwuc3VtRG9pbmcgKyBSLnN1bURvaW5nOwogICAgICAgIHJlcy5kb2luZ011bCA9IEwuZG9pbmdNdWwgKyBSLmRvaW5nTXVsOwogICAgICAgIHJlcy5jbnQgPSBMLmNudCArIFIuY250OwogICAgICAgIHJldHVybiByZXM7CiAgICB9Cn0gbm9kZVtOIDw8IDJdOwoKdm9pZCBwdXNoRG93bihpbnQgaWQpIHsKICAgIGlmIChub2RlW2lkXS5sYXp5KSB7CiAgICAgICAgbm9kZVtpZCA8PCAxXS5kb2luZ011bCArPSBub2RlW2lkIDw8IDFdLnN1bURvaW5nICogbm9kZVtpZF0ubGF6eTsKICAgICAgICBub2RlW2lkIDw8IDFdLmxhenkgKz0gbm9kZVtpZF0ubGF6eTsKCiAgICAgICAgbm9kZVtpZCA8PCAxIHwgMV0uZG9pbmdNdWwgKz0gbm9kZVtpZCA8PCAxIHwgMV0uc3VtRG9pbmcgKiBub2RlW2lkXS5sYXp5OwogICAgICAgIG5vZGVbaWQgPDwgMSB8IDFdLmxhenkgKz0gbm9kZVtpZF0ubGF6eTsKCiAgICAgICAgbm9kZVtpZF0ubGF6eSA9IDA7CiAgICB9Cn0KCnZvaWQgdXBkYXRlUG9zKGludCBwb3MsIGludCBsaW1pdCwgaW50IGRvaW5nLCBpbnQgcmVhbFBvcywgaW50IHNpZ24pIHsKICAgIGludCBpZCA9IDEsIGwgPSAxLCByID0gc2l6ZVRyZWU7CiAgICB3aGlsZShsIDwgcikgewogICAgICAgIHB1c2hEb3duKGlkKTsKICAgICAgICBpbnQgbWlkID0gKGwgKyByKSA+PiAxOwogICAgICAgIGlmIChwb3MgPiBtaWQpIGlkID0gKGlkIDw8IDEgfCAxKSwgbCA9IG1pZCArIDE7CiAgICAgICAgZWxzZSBpZCA9IChpZCA8PCAxKSwgciA9IG1pZDsKICAgIH0KCiAgICBub2RlW2lkXS5kb2luZ011bCArPSAxbGwgKiBkb2luZyAqIChyZWFsUG9zIC0gMSkgKiBzaWduOwogICAgbm9kZVtpZF0uc3VtRG9pbmcgKz0gZG9pbmcgKiBzaWduOwogICAgbm9kZVtpZF0uc3VtTGltaXQgKz0gbGltaXQgKiBzaWduOwogICAgbm9kZVtpZF0uY250ICs9IHNpZ247CgogICAgd2hpbGUoaWQpIHsKICAgICAgICBpZCA+Pj0gMTsKICAgICAgICBub2RlW2lkXSA9IGNvbWJpbmUobm9kZVtpZCA8PCAxXSwgbm9kZVtpZCA8PCAxIHwgMV0pOwogICAgfQp9Cgp2b2lkIHVwZGF0ZURvaW5nKGludCBpZCwgaW50IGwsIGludCByLCBpbnQgdSwgaW50IHYsIGludCBzaWduKSB7CiAgICBpZiAobCA+IHYgfHwgciA8IHUgfHwgdSA+IHYpIHJldHVybjsKICAgIGlmICh1IDw9IGwgJiYgciA8PSB2KSB7CiAgICAgICAgbm9kZVtpZF0uZG9pbmdNdWwgKz0gbm9kZVtpZF0uc3VtRG9pbmcgKiBzaWduOwogICAgICAgIG5vZGVbaWRdLmxhenkgKz0gc2lnbjsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBwdXNoRG93bihpZCk7CiAgICBpbnQgbWlkID0gKGwgKyByKSA+PiAxOwogICAgdXBkYXRlRG9pbmcoaWQgPDwgMSwgbCwgbWlkLCB1LCB2LCBzaWduKTsKICAgIHVwZGF0ZURvaW5nKGlkIDw8IDEgfCAxLCBtaWQgKyAxLCByLCB1LCB2LCBzaWduKTsKICAgIG5vZGVbaWRdID0gY29tYmluZShub2RlW2lkIDw8IDFdLCBub2RlW2lkIDw8IDEgfCAxXSk7Cn0KCmludCBnZXRDbnQoaW50IGlkLCBpbnQgbCwgaW50IHIsIGludCB1LCBpbnQgdikgewogICAgaWYgKGwgPiB2IHx8IHIgPCB1IHx8IHUgPiB2KSByZXR1cm4gMDsKICAgIGlmICh1IDw9IGwgJiYgciA8PSB2KSByZXR1cm4gbm9kZVtpZF0uY250OwogICAgcHVzaERvd24oaWQpOwogICAgaW50IG1pZCA9IChsICsgcikgPj4gMTsKICAgIGludCBMID0gZ2V0Q250KGlkIDw8IDEsIGwsIG1pZCwgdSwgdik7CiAgICBpbnQgUiA9IGdldENudChpZCA8PCAxIHwgMSwgbWlkICsgMSwgciwgdSwgdik7CiAgICByZXR1cm4gTCArIFI7Cn0KCmludCBmaW5kUG9zKGludCBrKSB7CiAgICBpbnQgaWQgPSAxLCBsID0gMSwgciA9IHNpemVUcmVlOwogICAgd2hpbGUobCA8IHIpIHsKICAgICAgICBwdXNoRG93bihpZCk7CiAgICAgICAgaW50IG1pZCA9IChsICsgcikgPj4gMTsKICAgICAgICBpZiAobm9kZVtpZCA8PCAxXS5jbnQgPj0gaykgewogICAgICAgICAgICBpZCA9IChpZCA8PCAxKTsKICAgICAgICAgICAgciA9IG1pZDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBrIC09IG5vZGVbaWQgPDwgMV0uY250OwogICAgICAgICAgICBpZCA9IChpZCA8PCAxIHwgMSk7CiAgICAgICAgICAgIGwgPSBtaWQgKyAxOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBsOwp9CgpsbCBzb2x2ZSgpIHsKICAgIC8vIHN1bSh0W2ldKSAtIHN1bShkW2ldICogKG4gLSBpICsgMSkpID0gc3VtKHRbaV0pIC0gc3VtKGRbaV0gKiBuKSArIHN1bShkW2ldICogKGkgLSAxKSkKICAgIC8vIGNvdXQgPDwgbm9kZVsxXS5zdW1MaW1pdCA8PCAnICcgPDwgbm9kZVsxXS5zdW1Eb2luZyA8PCAnICcgPDwgbm9kZVsxXS5kb2luZ011bCA8PCAnXG4nOwogICAgcmV0dXJuIG5vZGVbMV0uc3VtTGltaXQgLSBub2RlWzFdLnN1bURvaW5nICogbnVtUGVyc29uICsgbm9kZVsxXS5kb2luZ011bDsKfQoKaW50IGdldENvbXByZXNzKGludCB4KSB7CiAgICBpbnQgcG9zID0gbG93ZXJfYm91bmQoYWxsKGNvbXByZXNzKSwgeCkgLSBjb21wcmVzcy5iZWdpbigpICsgMTsKICAgIHJldHVybiBwb3MgKyAoY3VyVXNlZFtwb3NdKyspOwp9CgppbnQgZ2V0UmVhbFBvcyhpbnQgcG9zKSB7CiAgICBpbnQgcmVzID0gZ2V0Q250KDEsIDEsIHNpemVUcmVlLCAxLCBwb3MgLSAxKTsKICAgIHJldHVybiByZXMgKyAxOwp9CgppbnQgdHJhY2VSZWFsUG9zKGludCByZWFsUG9zKSB7CiAgICBpZiAocmVhbFBvcyA+IG5vZGVbMV0uY250KSByZXR1cm4gc2l6ZVRyZWUgKyAxOwogICAgaW50IHJlcyA9IGZpbmRQb3MocmVhbFBvcyk7CiAgICByZXR1cm4gcmVzOwp9Cgp2b2lkIGluaXQodm9pZCkgewogICAgaW50IHN1YnRhc2s7IGNpbiA+PiBzdWJ0YXNrOwogICAgY2luID4+IG51bVBlcnNvbiA+PiBudW1RdWVyeTsKICAgIEZPUihpLCAxLCBudW1QZXJzb24pIGNpbiA+PiBwZXJzb25baV0uZmkgPj4gcGVyc29uW2ldLnNlLCBjb21wcmVzcy5wYihwZXJzb25baV0uc2UpOwogICAgRk9SKGksIDEsIG51bVF1ZXJ5KSBjaW4gPj4gUVtpXS5wb3MgPj4gUVtpXS5saW1pdCA+PiBRW2ldLmRvaW5nLCBjb21wcmVzcy5wYihRW2ldLmRvaW5nKTsKICAgIHNpemVUcmVlID0gbnVtUGVyc29uICsgbnVtUXVlcnk7Cn0KCnZvaWQgcHJvY2Vzcyh2b2lkKSB7CiAgICBzb3J0KGFsbChjb21wcmVzcykpOwogICAgRk9SKGksIDEsIG51bVBlcnNvbikgcGVyc29uW2ldLnNlID0gZ2V0Q29tcHJlc3MocGVyc29uW2ldLnNlKTsKICAgIEZPUihpLCAxLCBudW1RdWVyeSkgUVtpXS5kb2luZyA9IGdldENvbXByZXNzKFFbaV0uZG9pbmcpOwoKICAgIEZPUihpLCAxLCBudW1QZXJzb24pIHsKICAgICAgICBpbnQgcmVhbFBvcyA9IGdldFJlYWxQb3MocGVyc29uW2ldLnNlKTsKICAgICAgICB1cGRhdGVEb2luZygxLCAxLCBzaXplVHJlZSwgdHJhY2VSZWFsUG9zKHJlYWxQb3MpLCBzaXplVHJlZSwgKzEpOwogICAgICAgIHVwZGF0ZVBvcyhwZXJzb25baV0uc2UsIHBlcnNvbltpXS5maSwgY29tcHJlc3NbcGVyc29uW2ldLnNlIC0gMV0sIHJlYWxQb3MsICsxKTsKICAgIH0KCiAgICBjb3V0IDw8IHNvbHZlKCkgPDwgJyAnOwoKICAgIEZPUihqLCAxLCBudW1RdWVyeSkgewogICAgICAgIGludCBpID0gUVtqXS5wb3M7CiAgICAgICAgaW50IHJlYWxQb3MgPSBnZXRSZWFsUG9zKHBlcnNvbltpXS5zZSk7CgogICAgICAgIC8vIGVyYXNlIG9sZCBpbmZvCiAgICAgICAgdXBkYXRlUG9zKHBlcnNvbltpXS5zZSwgcGVyc29uW2ldLmZpLCBjb21wcmVzc1twZXJzb25baV0uc2UgLSAxXSwgcmVhbFBvcywgLTEpOwogICAgICAgIHVwZGF0ZURvaW5nKDEsIDEsIHNpemVUcmVlLCB0cmFjZVJlYWxQb3MocmVhbFBvcyksIHNpemVUcmVlLCAtMSk7CgogICAgICAgIC8vIGNoYW5nZSBuZXcgaW5mbwogICAgICAgIHBlcnNvbltpXS5zZSA9IFFbal0uZG9pbmc7CiAgICAgICAgcGVyc29uW2ldLmZpID0gUVtqXS5saW1pdDsKCiAgICAgICAgcmVhbFBvcyA9IGdldFJlYWxQb3MocGVyc29uW2ldLnNlKTsKCiAgICAgICAgdXBkYXRlRG9pbmcoMSwgMSwgc2l6ZVRyZWUsIHRyYWNlUmVhbFBvcyhyZWFsUG9zKSwgc2l6ZVRyZWUsICsxKTsKICAgICAgICB1cGRhdGVQb3MocGVyc29uW2ldLnNlLCBwZXJzb25baV0uZmksIGNvbXByZXNzW3BlcnNvbltpXS5zZSAtIDFdLCByZWFsUG9zLCArMSk7CgogICAgICAgIGNvdXQgPDwgc29sdmUoKSA8PCAnICc7CiAgICB9Cn0KCmludCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7IGNvdXQudGllKDApOwogICAgaWYgKGZvcGVuKHRhc2siLmlucCIsICJyIikpIHsKICAgICAgICBmcmVvcGVuKHRhc2siLmlucCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4odGFzayIub3V0IiwgInciLCBzdGRvdXQpOwogICAgfQogICAgaW50IHRjID0gMTsKLy8gICAgY2luID4+IHRjOwogICAgd2hpbGUodGMtLSkgewogICAgICAgIGluaXQoKTsKICAgICAgICBwcm9jZXNzKCk7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=