https://www.luogu.org/problem/P3919
可持久化数组支持历史版本单点修改+单点查询。
思想和可持久化线段树有相似之处,不过可持久化数组是普通线段树而不是权值线段树实现,这个线段树维护这一长度为n的区间。
#include<bits/stdc++.h>
using namespace std;
const int maxn=1000000+100;
int n,m,a[maxn],tree[maxn],L[maxn*20],R[maxn*20],val[maxn*20],tot;
void build(int& o,int l,int r)
{
o=++tot;
if(l==r){
val[o]=a[l];return