题意:
输入一个正整数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)<<" "; 25 } 26 return 0; 27 }