#include #include #include using namespace std; #include #include template struct rangefreq{ int n; vector >dat; rangefreq(const vector&v={}) { n=1; while(n=0;i--) { dat[i].resize(dat[i*2+1].size()+dat[i*2+2].size()); merge(dat[i*2+1].begin(),dat[i*2+1].end(), dat[i*2+2].begin(),dat[i*2+2].end(), dat[i].begin() ); } } int query(int a,int b,T x,int k=0,int l=0,int r=-1)const//[a,b) count(*&P) { long l=-1e9,r=1e9+1; int K=R-L; while(r-l>1) { long m=(l+r)/2; if(P.query(L,R,m)>=(K+1)/2)r=m; else l=m; } return l; } main() { cin>>N; vectorA(N); for(int&a:A)cin>>a; rangefreqP(A); reverse(A.begin(),A.end()); rangefreqQ(A); long ans=0; for(int K=1;K<=N;K++) { int t=(K-1)/2; vectorL(N/K),R(N/K); for(int i=0;i+K<=N;i+=K) { L[i/K]=f(i,i+K,P); R[i/K]=f(i,i+K,Q); } for(int i=1;i