#include<bits/stdc++.h>
const int maxn=100010;
using namespace std;
int main(){
int N,M,circle=0,sumdis[maxn]={0},left,right;
cin>>N;
for(int i=1;i<=N;i++){
int temp;
cin>>temp;
circle+=temp;//circle代表圆的长度
sumdis[i]=sumdis[i-1]+temp;//sumdis[i]:从第1个出口到第i+1个出口的距离之和
}
cin>>M;
while(M--){
cin>>left>>right;
if(left>right) swap(left,right);
int temp;
temp=sumdis[right-1]-sumdis[left-1];//为什么减去1,因为 sumdis[i]是从第1个出口到第i+1个出口的距离之和
cout<<min(temp,circle-temp)<<endl;
}
return 0;
}
A1046
最新推荐文章于 2021-02-03 11:42:16 发布