注意为防止超时,输入时做预处理
#include <iostream>
using namespace std;
struct exit_pair{
int e1,e2;
};
int main(){
int N;
cin>>N;
int distance;
long long int sum[N+1];
sum[0]=0;
for (int i = 1; i < N; ++i){
cin>>distance;
sum[i]=sum[i-1]+distance;
}
cin>>sum[N];
int M;
cin>>M;
exit_pair p[M];
for (int i = 0; i < M; ++i){
cin>>p[i].e1>>p[i].e2;
if(p[i].e2<p[i].e1)
swap(p[i].e1,p[i].e2);
p[i]={p[i].e1-1,p[i].e2-1};
}
for (int i = 0; i < M; ++i) {
long long int d1=0,d2=0;
d1=sum[p[i].e2]-sum[p[i].e1];
d2=sum[p[i].e1]+sum[N-1]-sum[p[i].e2]+sum[N];
d1=(d1<d2)?d1:d2;
cout<<d1<<endl;
}
return 0;
}