#include<iostream>
using namespace std;
const int P=1000010;
int a[2001000],n,ans,m;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>m;
if(i==1){
ans+=m;
a[m+P]=0;
int l=1,r=1;
while(m-l+P>=0){
a[m-l+P]=l;
l++;
}
while(m+r<=P){
a[m+r+P]=r;
r++;
}
}
else {
ans+=a[m+P];
a[m+P]=0;
int l=1,r=1;
while(a[m-l+P]>l&&m-l+P>0){
a[m-l+P]=l;
l++;
}
while(a[m+r+P]>r&&m+r<=P){
a[m+r+P]=r;
r++;
}
}
}
cout<<ans;
return 0;
}
思路是根据每天的营业额将所有天数的最小波动值求出比较最优解,但是会有两个点超时,该如何修改。求助