1046. Shortest Distance

用部分和快速求任意区间内的和

#include<iostream>
using namespace std;
int val[100003],n,m;
int main(){
  cin>>n;
  for(int i=1;i<=n;++i) {
    scanf("%d",val+i);
    val[i]+=val[i-1];
  }
  scanf("%d",&m);
  for(int a,b,i=0;i<m;++i){
    scanf("%d%d",&a,&b);
    if(a>b)swap(a,b);
    int tmp=val[b-1]-val[a-1];
    printf("%d\n",min(tmp,val[n]-tmp));
  }
}


你可能感兴趣的:(1046. Shortest Distance)