链接
https://www.acwing.com/problem/content/1532
#include<iostream>
using namespace std;
const int N = 100010;
const int M = 200010;
int a[M],s[M]; // 最后一直过不了是因为a[N],数据小了
int n,m;
// 需要倍长一下数据,表示两倍
int main()
{
cin >> n;
for(int i=1;i <= n;i++)
{
cin >> a[i];
}
for(int i=n+1;i <= 2*n;i++)
{
a[i] = a[i-n];
}
for(int i=1;i <= 2*n;i++)
{
s[i] = s[i-1] + a[i];
}
int x,y;
int ans = 0;
cin >> m;
while(m--)
{
cin >> x >> y;
if(x > y) swap(x,y);
ans = min(s[y-1] - s[x-1],s[x+n-1] - s[y-1]);
cout << ans << endl;
}
return 0;
}