#include<stdio.h> #include<algorithm> using namespace std; const int MAXN = 100005; int d[MAXN],A[MAXN]; //d[i]用来存储沿顺时针方向第一个节点到第i个节点的距离,A[i]存储第i个节点到第i+1个节点的距离 int main(){ int n; scanf("%d",&n); int sum = 0; //记录总距离 int left,right; for(int i=1;i<=n;i++){ scanf("%d",&A[i]); sum += A[i]; d[i] = sum; //d[i]就是顺时针第1个节点到第i个节点后一个节点(i+1)的距离 } int m; scanf("%d",&m); for(int i=0;i<m;i++){ scanf("%d %d",&left,&right); if(left>right) swap(left,right); int distance = d[right-1] - d[left-1]; printf("%d\n",min(distance,sum-distance)); } return 0; }