题目链接:http://pat.zju.edu.cn/contests/pat-a-practise/1046
// 为了避免重复计算:计算2个点间的距离,需要累加。
// 改为,在对应节点存放到1的距离,n+1的位置,存放了一圈的总路程total。
// 求2点间距离时,执行相减即可的dis。total-dis与dis小者为结果。
//
#include <stdio.h>
#define SIZE 100000+5
int d[SIZE];
int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("E:\\in.txt", "r", stdin);
#endif
int n;
scanf("%d", &n);
int i, t;
d[1] = 0;
for(i=1; i<=n; i++)
{
scanf("%d", &t);
d[i+1] = d[i]+t;
}
int total = d[n+1];
int m;
scanf("%d", &m);
while(m-->0)
{
int s, e;
scanf("%d%d", &s, &e);
int x = s<e ? s:e;
int y = s>e ? s:e;
int d1 = d[y] - d[x];
printf("%d\n", d1<total-d1 ? d1:total-d1);
}
return 0;
}