Note
- 简单模拟
- 双重for循环会超时 寻找可以到达**O(N)**的方法!
Code:
#include<bits/stdc++.h>
using namespace std;
int main(){
#ifndef ONLINE_JUDGE
freopen("data.txt","r",stdin);
#endif
int n,m;
scanf("%d",&n);
int d[n+1],sum=0,tmp;
memset(d,0,sizeof(d));
for(int i=1;i<=n;i++){
scanf("%d",&tmp);
sum+=tmp;
d[i]=sum;
}
scanf("%d",&m);
int a,b,dis;
for(int i=0;i<m;i++){
scanf("%d%d",&a,&b);
if(a==b){
printf("0\n");
continue;
}
else{
if(a>b) swap(a,b);
dis=d[b-1]-d[a-1];
dis=dis<=(sum/2)?dis:(sum-dis);
printf("%d\n",dis);
}
}
return 0;
}