2022.1.2练习 PAT甲 1046 Shortest Distance(原题链接)
渣渣题解如下:
#include<bits/stdc++.h>
using namespace std;
const int MAX_NUM=1e5+5;
int d[MAX_NUM];
int main()
{
std::ios::sync_with_stdio(false);
int N;
cin>>N;
int sum=0;
d[0]=0;
for(int i=1;i<=N;i++)
{
int tmp;
cin>>tmp;
if(i<N)
d[i]=tmp+d[i-1];
else
d[i]=tmp;
sum+=tmp;
}
int M;
cin>>M;
for(int i=1;i<=M;i++)
{
int start,endd;
cin>>start>>endd;
if(start>endd)
swap(start,endd);
int dis1=d[endd-1]-d[start-1];
int dis2=sum-dis1;
int min_dis=min(dis1,dis2);
if(i<M)
cout<<min_dis<<endl;
else
cout<<min_dis;
}
return 0;
}