PAT甲1046 简单模拟
思路:用前缀和计算前缀的和为多少,然后判断两种方法直接到还是走两段的付出少,记为ans
代码:
#include<iostream>
using namespace std;
const int maxn=1e5+7;
typedef long long ll;
ll sum[maxn],total;
int a[maxn];
void pd(int &x,int &y)
{
int t;
if(x>y)
{
t=x;
x=y;
y=t;
}
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
sum[i]=a[i]+sum[i-1];
total+=a[i];
}
int m;
cin>>m;
while(m--)
{
int x,y;
cin>>x>>y;
pd(x,y);
ll ans1=0,ans2=0,ans;
ans1=sum[y-1]-sum[x-1];
ans2=total-(ans1);
ans=min(ans1,ans2);
cout<<ans<<endl;
}
return 0;
}

浙公网安备 33010602011771号