1046 Shortest Distance (20 分)
思路
提前将输入统计为路径,准备好答案进行匹配。
代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,i,j,temp,start;
int dis[100005];
int sum =0 ;
dis[0] = 0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&start);
sum+=start;
dis[i] = sum;
}
int m;
int dis1,dis2;
int a,b;
scanf("%d",&m);
for(i=0;i<m;i++)
{
scanf("%d%d",&a,&b);
if (a > b)
swap(a,b);
dis1 = dis[b-1] - dis[a-1];
dis2 = sum -dis1;
if (dis1<dis2)
printf("%d\n",dis1);
else
printf("%d\n",dis2);
}
}