提前对数组求和降低时间复杂度。
#include<iostream>
using namespace std;
int Sum[100002]={0};
int Min(int a,int b){
return a<b? a:b;
}
int main(){
int N,i,a,b,temp;
cin>>N;
Sum[1]=0;
for(i=2;i<=N;i++){
scanf("%d",&Sum[i]);
Sum[i]+=Sum[i-1];
}
scanf("%d",&Sum[0]);
int K;
cin>>K;
int dis1=0,dis2=0;
for(i=0;i<K;i++){
cin>>a>>b;
if(a>b){
temp=b;
b=a;
a=temp;
}
dis1=Sum[b]-Sum[a];
dis2=Sum[N]-Sum[b]+Sum[0]+Sum[a];
dis1=Min(dis1,dis2);
cout<<dis1<<endl;
}
system("pause");
return 0;
}