解题:
2025-03-21 13:12:34
发布于:广东
31阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
long long a[N],b[N],pre1[N],pre2[N],suf1[N],suf2[N];
int main(){
ios::sync_with_stdio(0),cin.tie(0);
int n;cin>>n;
for(int i=1;i<=n;++i)cin>>a[i];
for(int i=1;i<=n;++i)cin>>b[i];
for(int i=1;i<=n;++i){
pre1[i]=max(pre1[i-1],0LL)+a[i]-b[i];
pre2[i]=max(a[i]-b[i],pre2[i-1]+a[i]-2*b[i]);
}
for(int i=n;i>=1;--i){
suf1[i]=max(suf1[i+1],0LL)+a[i]-b[i];
suf2[i]=max(a[i]-b[i],suf2[i+1]+a[i]-2*b[i]);
}
for(int i=1;i<=n;++i){
long long cross1=pre1[i]+suf2[i]-(a[i]-b[i]);
long long cross2=pre2[i]+suf1[i]-(a[i]-b[i]);
cout<<max({pre1[i],suf1[i],cross1,cross2})<<" ";
}
return 0;
}
不喜勿说
全部评论 1
2025-03-22 来自 广东
0
有帮助,赞一个