#include #include #include #include using namespace std; using dm=pair; dm opm(dm a,dm b){return min(a,b);} dm em(){return make_pair((long)1e18,-1);} dm mpm(long f,dm x) { x.first+=f; return x; } long cmpm(long f,long g){return f+g;} long idm(){return 0L;} struct dat{ long w; long s; }; dat op(dat a,dat b){return a;} dat e(){return(dat){};} struct F{ long a; long b; long c; }; dat mp(F f,dat x) { x.s+=f.c+f.b*x.w; x.w+=f.a; return x; } F cmp(F f,F g) { g.c+=f.c+g.a*f.b; g.b+=f.b; g.a+=f.a; return g; } F id(){return(F){0L,0L,0L};} int N,A[2<<17],B[2<<17]; long ans[2<<17]; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cin>>N; vector >vs(N+N); for(int i=0;i>A[i]; vs[i]=make_pair(A[i],i); } for(int i=0;i>B[i]; vs[N+i]=make_pair(B[i],N+i); } sort(vs.begin(),vs.end()); vectorinitm(N); vectorinit(N); for(int k=0;ksegm(initm); atcoder::lazy_segtreeseg(init); seg.apply(0,N,(F){0,vs[0].first,0}); seta,b; a.insert(-1); a.insert(N); b.insert(-1); b.insert(N); for(int i=0;i0)break; ans[t.second]=seg.get(t.second).s; segm.set(t.second,em()); } if(i+1