#include <iostream>
#include <vector>
using namespace std;
int main() {
int n,m,sum=0,start,end;
cin>>n;
vector<int>a(n),dis(n+1);
for(int i=1;i<n;i++){
scanf("%d",&a[i]);
dis[i+1]=dis[i]+a[i]; //dis[i]为起点到第i个结点的距离
sum+=a[i];
}
scanf("%d",&a[0]);
sum+=a[0]; //sum为环形路程总和
cin>>m;
for(int i=0;i<m;i++){
cin>>start>>end;
if(start>end) swap(start,end);
int temp=dis[end]-dis[start];
cout<<min(temp,sum-temp)<<endl;
}
return 0;
}
PAT 1046 Shortest Distance (20 分)模拟
最新推荐文章于 2024-07-25 11:38:39 发布