连8pts都没
#include<bits/stdc++.h>
#define ull unsigned long long
using namespace std;
const int N=2.5*(1e5+10);
template<typename T>void read(T &x)
{
x=0;char c=getchar();T neg=0;
while(!isdigit(c))neg|=!(c^'-'),c=getchar();
while(isdigit(c))x=(x<<3)+(x<<1)+(c^48),c=getchar();
if(neg)x=(~x)+1;
}
template<typename T>void wr(T x)
{
if(x<0)putchar('-'),x=-x;
if(x>9)wr(x/10);
putchar((x-x/10*10)^48);
return ;
}
ull n,id,q;
ull maxx1[N][23],maxx2[N][23],anss[6010][6010],anss2[6010][6010];
void ycl()
{
for(int j=1;j<=20;++j)
for(int i=1;1ull*(i+(1ull<<(j-1)))<=n;++i)
{
maxx1[i][j]=max(maxx1[i+(1ull<<(j-1))][j-1],maxx1[i][j-1]);
maxx2[i][j]=max(maxx2[i+(1ull<<(j-1))][j-1],maxx2[i][j-1]);
}
}
int main()
{
freopen("match.in","r",stdin);
freopen("match.out","w",stdout);
read(id),read(n);
for(ull i=1;i<=n;++i)read(maxx1[i][0]);
for(ull i=1;i<=n;++i)read(maxx2[i][0]);
ycl();
read(q);
for(ull i=1;i<=q;++i)
{
ull l,r;
read(l),read(r);
ull ans=0;
//ans=anss2[l][r];
for(ull j=l;j<=r;++j)
{
for(ull k=j;k<=r;++k)
{
if(anss[j][k]){
ans+=anss[j][k];
continue;
}
ull k3=log(k-j+1)/log(2);
ull ma1=max(maxx1[j][k3],maxx1[k-(1ull<<(k3))+1][k3]);
ull ma2=max(maxx2[j][k3],maxx2[k-(1ull<<(k3))+1][k3]);
anss[j][k]=ma1*ma2;
//printf("l=%d r=%d k3=%d\n",j,k,k3);
//wr(ma1),putchar(' '),wr(ma2),putchar('\n');
ans+=ma1*ma2;
}
}
wr(ans),putchar('\n');
}
return 0;
}
/*
0 2
2 1
1 2
1
1 2
*/