[cf86D]Powerful array


Description

给定一个长度为n的数组,t次查询,求\(\sum_{i=l}^{r}a_i*s_{a_i}^2\)。其中,\(s_k\)\(k\)在区间\([l,r]\)出现的次数。

Solution

莫队裸题。

#include
using namespace std;

typedef long long ll;
const int N=200005,K=1000005;
struct query{
	int l,r,n;
}q[N];
int a[N],s[K],f[N],n,m,t;
ll ans[N];
bool cmp(query a,query b){
	if(f[a.l]!=f[b.l]) return f[a.l]q[i].r){
			tmp-=remove(r);--r;
		}
		while(l>q[i].l){
			--l;tmp+=add(l);
		}
		while(l