【PAT甲级】1046 Shortest Distance (20 分)

题意:

输入一个正整数N(<=1e5),代表出口的数量,接下来输入N个正整数表示当前出口到下一个出口的距离。接着输入一个正整数M(<=10000),代表询问的次数,每次询问输入两个出口的序号,输出他们之间的最小距离。

AAAAAccepted code

 1 #define HAVE_STRUCT_TIMESPEC
 2 #include<bits/stdc++.h>
 3 using namespace std;
 4 int dis[100007],sum[100007];
 5 int main(){
 6     ios::sync_with_stdio(false);
 7     cin.tie(NULL);
 8     cout.tie(NULL);
 9     int n;
10     cin>>n;
11     for(int i=1;i<=n;++i){
12         cin>>dis[i];
13         sum[i]=sum[i-1]+dis[i];
14     }
15     int q;
16     cin>>q;
17     for(int i=1;i<=q;++i){
18         int u,v;
19         cin>>u>>v;
20         if(v<u)
21             swap(u,v);
22         int x=sum[v-1]-sum[u-1];
23         int y=sum[n]-x;
24         cout<<min(x,y)<<"\n";
25     }
26     return 0;
27 }

 

 

 

posted @ 2019-09-29 09:01  sewage  阅读(219)  评论(0编辑  收藏  举报