//
// main.cpp
// PAT_1046. Shortest Distance
//
// Created by wjq on 17/5/9.
// Copyright © 2017年 wjq. All rights reserved.
//
#include <iostream>
#include <vector>
using namespace std;
int N,M,D[100005],sum=0,d,total;
int main(int argc, const char * argv[])
{
scanf("%d",&N);
D[1]=0;
for(int i=1;i<=N;i++)
{
scanf("%d",&d);
sum+=d;
D[i+1]=sum;
}
scanf("%d",&M);
for(int i=1;i<=M;i++)
{
int a,b;
scanf("%d%d",&a,&b);
if(a>b)
total=D[a]-D[b];
else
total=D[b]-D[a];
if(sum-total<total)
cout<<sum-total<<endl;
else
cout<<total<<endl;
}
return 0;
}
思路:
1.点A与点B的距离=点A到原点的距离-点B到原点的距离,后两者在输入的时候就可以得到
2.由于是一个环,所以直接用 环的总长度-A与B的距离 再与 A与B的距离 对比大小就可以知道最短距离