Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
98089 luohao 早凉与序列4 C++ 解答错误 0 1000 MS 3392 KB 936 2023-08-14 12:00:02

Tests(1/7):


#include "bits/stdc++.h" using namespace std; int n,k,x,a[200000],s[200000],f[200000],l,ans,i,j,b[200000]; struct node{ int v,i; }q[200000]; void push(int x,int i) { while(l>0&&x>=q[l].v) l--; q[++l].v=x,q[l].i=i; } int main() { cin>>n>>k>>x; for(i=1;i<=n;i++) cin>>a[i],b[i]=a[i]; if(x<0) x=-x,k=n-k; if(k!=0) { for(i=1;i<=n-k+1;i++) { l=0; q[1].v=0; for(j=1;j<i;j++) b[j]=a[j]-x; for(j=i;j<=i+k-1;j++) b[j]=a[j]+x; for(j=i+k;j<=n;j++) b[j]=a[j]-x; for(j=1;j<=n;j++) s[j]=s[j-1]+b[j]; for(j=1;j<=n;j++) { f[j]=max(0,q[1].v+s[j]); push(f[j]-s[j],j); } for(int j=1;j<=n;j++) ans=max(ans,f[j]); } cout<<max(0,ans); } else { for(i=1;i<=n;i++) a[i]-=x; for(i=1;i<=n;i++) s[i]=s[i-1]+a[i]; for(i=1;i<=n;i++) { f[i]=max(0,q[1].v+s[i]); push(f[i]-s[i],i); } for(int j=1;j<=n;j++) ans=max(ans,f[j]); cout<<ans; } }


测评信息: