如果直接用二维数组来存储距离,会导致内存超限,所以不能用二维数组存储。采用g数组存储点1到i点的下一点i+1的距离
代码如下:
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int n,t,sum=0,m,l,r;
scanf("%d",&n);
int g[n+1];
g[0]=0; //默认1到自己的距离为0
for (int i=1;i<=n;i++){
scanf("%d",&t);
sum+=t;
g[i]=sum;
}
scanf("%d",&m);
for (int i=0;i<m;i++){
scanf("%d%d",&l,&r);
if (l>r) swap(l,r);
t=g[r-1]-g[l-1]; //注意这个地方,r-1和l-1
int mmin=min(t,sum-t);
printf("%d\n",mmin);
}
return 0;
}