Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <stdio.h>const int MaxNode = 1000000;const int MaxNumber = 0x7fffffff;struct lineNode {int l, r;int lchild, rchild;int minus;};lineNode a[2 * MaxNode];int n, Q;int weight[MaxNode + 1];int treeNumber = 0;void changeWeight(int pos, int num, int weight) {if (a[pos].l == a[pos].r) {a[pos].minus = weight;return;}if (num > (a[pos].l + a[pos].r) / 2)changeWeight(a[pos].rchild, num, weight);elsechangeWeight(a[pos].lchild, num, weight);int lminus = a[a[pos].lchild].minus;int rminus = a[a[pos].rchild].minus;a[pos].minus = lminus < rminus ? lminus : rminus;}