Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
98239 CSYZTanXi 早凉与序列4 C++ 解答错误 30 114 MS 1816 KB 1024 2023-08-14 13:01:19

Tests(27/31):


#include<bits/stdc++.h> #define int long long using namespace std; inline int read() { int f=1,x=0; char c=getchar(); while(c>'9'||c<'0') { if(c=='-') f*=-1; c=getchar(); } while(c>='0'&&c<='9') { x=x*10+c-'0'; c=getchar(); } return x*f; } const int N=2e5+7; int s[N],n,k,x,ans,now,nowans; inline int get_(int len) { if(len<=k) return len*x; if(len>k) return k*x-(len-k)*x; } const int OP=500; signed main() { n=read(); k=read(); x=read(); if(x<0) { x*=-1; k=n-k; } for(int i=1;i<=n;i++) s[i]=s[i-1]+read(); ans=0; nowans=0; for(int i=1;i<=n;i++) { if(s[i]+get_(i)>ans) { nowans=ans=s[i]+get_(i); now=i; } } for(int l=2;l<=n;l++) { ans=max(ans,nowans=s[now]-s[l-1]+get_(now-l+1)); int opt=now; for(int r=opt+1;r<=min(n,opt+OP);r++) { if(s[r]-s[l-1]+get_(r-l+1)>nowans) { nowans=s[r]-s[l-1]+get_(r-l+1); now=r; } } ans=max(ans,nowans); } printf("%lld",ans); return 0; }


测评信息: