简单的尺取法吧,昨天心态玩到爆炸,时区搞不准。。无奈自我退战了一波。
#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define mp make_pair
int a[100005];
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<n;i++)
scanf("%d",&a[i]);
scanf("%d",&a[0]);
int s,t;
scanf("%d%d",&s,&t);
int sum=0;
int len=t-s;
for(int i=1;i<=len;i++)
sum+=a[i];
int ans=sum;
int ans1=n;
for(int i=2;i<=n;i++)
{
int tmp=(i+len-1)%n,tmp1=i-1;
sum-=a[tmp1];
sum+=a[tmp];
if(sum>ans)
{
ans=sum;
ans1=(s-i+1+n)%n;
if(ans1==0)ans1=n;
}
}
for(int i=1;i<=n;i++)
{
int tmp=(i+len-1)%n,tmp1=i-1;
sum-=a[tmp1];
sum+=a[tmp];
if(sum==ans)
{
int tmp2=(s-i+1+n)%n;;
if(tmp2==0)tmp2=n;
ans1=min(ans1,tmp2);
}
}
cout<<ans1<<endl;
return 0;
}